운영체제
3. 운영체제 구조
갓우태
2018. 12. 12. 18:01
사용자 OS 인터페이스
CLI(Command Interpreter : 명령어 인터프리터), GUI(Graphical User Interface)
CLI
- 커널 혹은 시스템 프로그램에 의해 구현
- 다중 Command Interpreter는 Shell로 알려짐
- 주요 기능 : 사용자로부터 명령을 받고 실행
ex) 맥북에서 터미널 실행해서 명령어 실행 (Windows는 cmd)
GUI
- 데스크탑에서 마우스로 상호작용 하는 것
- user-friendly desktop metaphor interface
많은 시스템이 CLI와 GUI둘다 포함한다.
ex) MS Windows의 GUI(바탕화면), CLI(Command Shell)
System Call과 API
System Call
- OS가 제공하는 서비스에 대한 프로그래밍 Interface
- 응용 프로그램의 요청에 따라 커널에 접근하기 위한 Interface
API(Application Programming Interface)
- 응용 프로그램 프로그래머가 사용할 수 있는 일련의 함수
- 한 세트의 API는 일반적으로 OS상단의 미들웨어 계층에 의해 제공
- 대부분의 응용 프로그램은 high level의 API를 사용하지만, System Call을 직접 사용하진
않는다.
- 그 이유는?
1. 호환성 - 프로그래머는 자신의 프로그램이 동일한 API를 지원하는 모든 시스템에서 컴파일하고 실행될 것을 기대한다.
2. Information hiding - 실제 System Call은 API보다 더 상세하고 어렵다.
user mode에서 printf로 stdio(Standard C Library) 호출
-> 라이브러리(API)에서 System Call인 write() 호출
-> 커널은 write() 실행하고, 다시 user mode로 돌아와 그 다음단계 진행
//참고로 API처럼 운영체제와 응용프로그램 사이를 연결시켜주는 소프트웨어를
미들웨어(Middle Ware)라고 한다.
System Program
- 프로그램 개발과 실행을 위한 편리한 환경을 제공.
- 파일 관리 ex)탐색기
- 상태 정보
- 프로그래밍 언어 지원 ex) 컴파일러, 어셈블러, 인터프리터
- 프로그램 적재(load)와 실행(execute) ex) 디버거
- 통신
- 시스템 프로그램은 System Call이나 어셈블리 언어로 개발한다.
운영체제 구조
1. Monolithic (단순 구조)
- 모듈로 나눠지지 않는다.
- 인터페이스와 기능 수준이 잘 구분되어있지 않다.
- ex) MS-DOS
2. Layered Approach (계층적 접근)
- 운영체제를 여러 계층으로 나누는 방식
- 상위 계층은 하위 계층의 인터페이스를 이용
- 최하위 계층 : 하드웨어. 최상위 계층 : 유저 인터페이스
- 장점 : 인터페이스만 유지하면, 하위계층은 상위계층과 무관하게 수정이 가능하다.
- 단점 : 근데 계층구분이 어렵다.
3. Microkernel
- 커널에 꼭 필요한 기능만 가지도록 구성된 커널
- 장점 : 확장이 용이, 높은 안정성, 높은 신뢰성, 높은 이식성...
4. Module
Virtual Machine (가상 기계)
- 프로세스가 마치 자신만의 프로세서와 메모리를 가지고 있는 것처럼 생각하도록 설계
- 모든 프로세스는 컴퓨터의 복사본이 제공.
System Boot
Booting
- 커널을 load해 컴퓨터를 시작하는 절차
Bootstrap program(또는 Boot loader, BIOS)
- 부팅을 도와주는 프로그램
- Step 1 : 진단을 실행하여 시스템 상태 확인
- Step 2: 커널을 찾아 주 메모리에 로드, 실행을 시작한다.
2단계 부팅 프로세스
- Step 1 : Bootstrap Program
(진단 실행 -> 부트블록 load (block no. 0) -> 부트블록 코드 실행)
- Step 2 : 부팅블록 코드는 전체 운영체제를 메모리에 로드하고 실행
반응형