운영체제에서 제공하는 서비스
운영체제에서 제공하는 서비스를 식별할 수 있다
운영체제가 사용자의 편의성을 위해 제공하는 기능
•
유저 인터페이스(User Interface)
◦
GUI(Graphical User Interface)
◦
CLI(Command Line Interface)
◦
터치스크린
•
프로그램 실행
◦
시스템은 반드시 메모리에 프로그램을 적재하고, 실행하고, 구동 종료까지 가능하게 하도록 함
•
I/O 수행
◦
실행 프로그램에 입출력이 필요할 경우 지원
•
파일시스템 조작
◦
파일 및 디렉토리 읽기/쓰기/생성/삭제 지원. 사용자 권한 관리
•
통신
◦
동일하거나 다른 컴퓨터 시스템의 프로세스 사이의 통신을 가능하게 함
시스템 자체에 효율적인 동작을 보장하는 기능들
•
리소스 할당 (자원 할당)
◦
다수개의 사용자 혹은 일을 동시에 처리할 때, 각각의 리소스에게 적당한 할당을 진행
•
로깅
◦
어떤 프로그램이 얼마나 많은 / 어떤 종류의 컴퓨터 자원을 사용했는지 계속 추적
•
보호와 보안
◦
다수 사용자나 네트워크 구성된 시스템이 동시 처리시 서로 방해되지 않도록 함
시스템 콜
운영체제 서비스 View
시스템 콜이 운영체제를 두 갈래로 나누고 있다.
운영체제에게 일을 요청하고 싶은데.. 어떻게 요청할까?
⇒ 시스템 콜
듀얼 모드
•
사용자와 운영체제는 시스템 자원을 공유
•
사용자와 커널 두 갈래로 나눠진 이유 : 사용자에게 제한을 두어 사용자가 메모리 내의 주요 운영체제 자원에 직접적으로 접근할 수 없도록 함(보안)
•
운영체제에서 프로그램이 구동되는데 있어, 파일을 읽어오거나, 쓰거나 화면에 메시지를 출력하는 등 많은 부분이 커널모드를 사용
•
서버에 직접 작업을 해야할 때 사용자가 서버 운영자에게 요청을 한다.
◦
서버 운영자가 아닌 사용자가 서버를 조작하게 되면 문제가 생길 여지가 있다.
•
사용자가 OS 상에서 실수를 하지 않게 하기 위해서 커널에서 검토 한번 하고 커널 모드에서 수행한 내용을 사용자에게 반환
시스템 콜
•
응용프로그램에서 운영체제에게 어떠한 기능(시스템 자원)을 수행해달라고 하는 하나의 수단
•
정의 : 커널 영역의 기능을 사용자 모드가 사용 가능하게 하는 하나의 수단
⇒ 프로세스가 하드웨어에 접근해서 필요한 기능을 사용할 수 있게 함
•
C 라이브러리는 시스템 콜을 사용하여 구현이 된다.
cp in.txt out.txt를 타이핑, 엔터!
어떤 상황이 발생하는가?
cp 라는 명령을 받았을 때, input file 명을 받고 output file 명을 받은 후
input file을 열고 output file을 생성
input file을 반복해서 읽은 후 해당 내용을 outputfile에 출력해준다.
input file의 끝에 도달 시, 종료 메세지를 스크린에 띄운 후 정상 종료한다.
시스템 콜 과정
유저모드가 요청(시스템 콜)을 하면 커널 모드 가 해당 시퀀스를 수행 후 리턴된 결과 값을 유저에게 띄워준다.
시스템 콜 유형
프로세스 제어
•
프로세스 생성, 종료
•
프로세스 로드, 실행
•
프로세스 속성 가져오기, 프로세스 속성 설정
•
Wait 이벤트, Signal 이벤트
•
메모리 할당 및 해제
파일 관리
•
파일 생성, 삭제 → rm
•
파일 열기, 닫기 → cat
•
파일 읽기, 쓰기, Reposition
•
파일 속성 값 확인, 지정
장치 관리
•
장치 요청, 해제
•
읽기, 쓰기, 재배치
•
장치 속성 가져오기, 설정
•
논리적인 장치 연결 및 분리
정보 유지
•
시스템 날짜 가져오기 및 설정
•
시스템 데이터 가져오기 및 설정
•
프로세스, 파일 및 장치 속성 가져오기 및 설정
통신
•
통신 연결 생성, 삭제
•
메시지 보내기, 받기
•
전송상태 정보
•
원격장치 연결 또는 분리
보호
•
파일 권한 얻기 및 설정
시스템 서비스
•
시스템 프로그램은 프로그램 개발 및 실행에 편리한 환경을 제공합니다.
◦
그들 중 일부는 단순히 시스템 호출에 대한 사용자 인터페이스입니다 ; 다른 것들은 상당히 더 복잡하다
•
다음과 같이 나눌 수 있습니다.
◦
파일 조작
◦
때때로 파일에 저장되는 상태 정보
◦
프로그래밍 언어 지원
◦
프로그램 로딩 및 실행
◦
커뮤니케이션
◦
백그라운드 서비스 ex) 데몬
◦
응용 프로그램
•
운영 체제에 대한 대부분의 사용자 관점은 실제 시스템 콜이 아닌 시스템 프로그램에 의해 정의됩니다.
Linkers(링커), Loaders(로더)
링커와 로더
•
모든 물리적 메모리 위치에 로드되도록 설계된 개체 파일로 컴파일된 소스 코드
◦
재배치 가능한 개체 파일(relocatable object file)
•
링커는 이들을 단일 바이너리 실행 파일로 결합합니다.
◦
또한 라이브러리를 가져옵니다.
•
프로그램은 바이너리 실행 파일로 보조 저장소에 상주합니다.
•
실행하려면 로더에 의해 메모리로 가져와야 합니다.
◦
재배치(relocation)는 프로그램 부분에 최종 주소를 할당, 해당 주소와 일치하도록 프로그램의 코드와 데이터를 조정
•
최신 범용 시스템(Modern general-purpose systems)은 라이브러리를 실행 파일에 연결하지 않습니다.
◦
동적으로 링크된 라이브러리 - DLL(Windows에서 dynamically linked libraries)는 조건부로 링크되면 프로그램 실행 시간에 필요한 경우 적재됩니다.
•
오브젝트 파일, 실행 파일은 표준 형식 → 운영 체제는 해당 파일들의 로드 및 시작 방법을 알고 있습니다.
링커와 로더의 역활
링커의 역활 : 미리 만들어져 있는 라이브러리 사용 + 지금 내가 만든 것들
⇒ main 실행파일을 만들건데 math library를 같이 넣어서 만들어줘
로더는 실행파일을 메모리에 올려준다.