1. 운영체제 핵심 컴포넌트
운영체제는 프로그램 실행환경을 제공하고 프로그램과 유저 사이를 잇는다.
User와 Kernel을 연결하므로써 잇는다 -> system call
System Call을 통해 kernel의 기능사용을 통제한다.

운영체제는 사용자의 시스템 사용을 위해 다양한 기능(함수)들을 제공한다.
- User Interface (GUI, CLI등)
- 프로그램 실행(.exe)
- 입출력 기능 (키보드, 마우스)
- 파일 시스템 관리
- 에러 관리
등과 같은 기능들을 제공하고 이와 관련된 System Call 이 존재한다.
2. 시스템 콜(System Call)
System Call
- 운영체제에서 제공된 서비스를 호출하기 위한 프로그래밍 인터페이스 (like API)
- 주로 c/c++로 작성되어 있음
특징
- 각 System Call에는 고유 번호가 할당되어 있음, 인덱스 테이블에 의해 번호가 관리됨
- System Call 인터페이스는 의도된 시스템을 호출 (OS 커널을 호출하고 시스템 호출의 상태와 임의의 반환 값을 반환)
- Programming Interface이기 때문에 사용자는 내부 구조를 알 필요가 없음 - 가져다 사용하기만 하면 됨

++ Parameter를 갖는 몇 가지의 System Call
- 레지스터에서 동작하는 System Call
- 메모리와 주소 블럭 같은 block(or table) 형식 - 메모리에 주소를 전달하기 위해 파라미터가 필요
- Stack - Parameter를 push, pop
-> Block과 Stack구조는 파라미터 크기, 갯수의 제약이 없음

3. 운영체제 구조 (예시)
● 간단한 구조 - MS DOS
- 최소한의 메모리 공간을 차지하도록 설계되어있음
- 모듈 개념이 없음
- 필요에 따라 컴포넌트들이 만들어짐
- 사용자가 ROM까지 자유롭게 접근 가능 -> 프로그램 다운 확률이 커짐

● 간단하지 않은 구조 - UNIX
- 하드웨어 기능에 의해 제한 될 수 있음
- 두 부분으로 나누어져 있음
- System Programs
- Kernel
- System Call 인터페이스와 물리적 하드웨어로 모든 것(시스템)으로 구성됨
- 파일 시스템, CPU 스케줄링, 메모리 관리 및 기타 운영 체제등 많은 기능 들을 하나의 레벨(층)에 의해 제공

● 층계구조
- 운영체제를 층계로 나누어 관리
- 최상층(UI) ~ 최하층(하드웨어)로 나누어 층 별로 관리를 함
- 장점 - 디버깅이 쉬움 (어디서 문제가 발생했는 지 파악하기가 쉽기 때문에)
- 단점 - 층 구조라는 것이 어려움(계층을 나누기가 어렵다), 다른 구조에 비해 비효율적이다 (층계 구조 때문에 거쳐가야 하므로 메모리와 속도의 성능이 저하됨)

● 마이크로 커널 구조 (최소화 구조)
- 기존 커널에 있던 기능들을 사용자 공간으로 가져옴
- 사용자 모듈 사이에서 메세지를 전달하며 통신함
- 장점 - 확장성이 좋음, 새로운 운영체제에 이식하기가 좋음, 더 신뢰성이 있음(커널모드에서 덜 실행 되므로)
- 단점 - 항상 메세지를 주고 받으며 통신하기 때문에 속도 저하의 문제가 있음

● 모듈 구조
- modern 운영체제 구조
- 커널 모듈을 Loading 하여 사용
- 새로 추가할 모듈을 동적으로 커널에 모듈을 탈부착 가능 (기존에는 커널 자체를 고치고 재시작했어야 했음)
- 층계 구조와의 비교
- 각 커널 섹션이 인터페이스를 정의하고 보호한다는 점에서 계층화된 접근 방식과 유사함
- 모듈 구조는모든 모듈이 다른 모듈을 호출할 수 있기 때문에 더 유연함
- 마이크로 커널 구조와의 비교
- 기본 모듈이 핵심 기능과 다른 모듈과 로드 및 통신하는 방법에 대한 지식만 가지고 있다는 점에서 마이크로커널 접근 방식과 유사함
- 모듈 구조는 모듈 간의 통신을 위해 메시지 전달이 필요하지 않다는 점에서 마이크로 커널 방식보다 성능이 우수
사진 출처: Provided by Operating Systems Concepts, 10th Edition (Abraham Silberschatz, Peter Baer Galvin, Greg Gagne)
'CS > OS' 카테고리의 다른 글
[OS] 6 - CPU Scheduling (1) (0) | 2024.08.23 |
---|---|
[OS] 5 - Thread (0) | 2024.08.06 |
[OS] 4 - 프로세스 간 통신 (0) | 2024.07.20 |
[OS] 3 - 프로세스 (0) | 2024.06.21 |
Operating System basic (1) | 2024.04.22 |