1. 운영체제의 소프트웨어 구조
1-1. 모노리씩 커널 구조 (Monolithic Kernel)
'단일체'라는 의미로, 커널 SW가 한 덩어리로 모여 있는 것을 의미한다.
- 내부에서 내부 함수 콜을 호출하고 결과를 받기 때문에, 실행 속도가 빠르다.
- Unix, Linux
1-2. 마이크로 커널 구조 (Micro Kernel)
운영체제의 기능들이 외부에서 구현되는 아키텍쳐를 의미한다. 프로세스의 형태를 띄며 운영체제 위에서 응용프로그램이 실행되는 것처럼 커널이 실행된다.
- 실행속도는 상대적으로 느리지만, 유지보수가 편리하다.
- 파일 관리, 통신 프로토콜, 입출력 디바이스 제어와 같은 기능들이 커널 외부에서 실행된다.
- 그러나 하드웨어 종속적인 코드들과 메모리 영역을 보호하는 프로세스, 기본적인 스케줄링 기능들은 커널 내부에 남아있어야 한다.
- 커널 크기가 작아진다는 장점을 갖고 있는데, IoT나 모바일 기기 같은 작은 운영체제를 필요로 하는 경우에 효과적으로 사용될 수 있다.
1-3. 운영체제의 종류
- UNIX (1971)
- 서버 컴퓨터 운영체제로 현재까지 범용적으로 사용되고 있다.
- 고수준언어 (C Language)로 구현 -> 하드웨어 호환성 (포팅) 증대
- 하드웨어 상위 커널을 System Call*이 감싸고 있기 때문에 사용자 응용프로그램에서는 직접 커널에 접근할 수 없다.
- System Call* 응용 프로그램이 운영체제를 사용할 수 있도록 인터페이스 역할을 하는 함수들의 집합
- LINUX (1991)
- UNIX for Personal Computer
- 빠른 실행 속도를 목적으로 제작되었기 때문에, 모놀리씩 커널 형태를 띈다.
- Windows
- 서포트, 서비스 프로세스들이 커널 외부에서 어플리케이션처럼 독립적으로 실행되는 마이크로 커널 형태를 띄고 있다.
- Mobile OS
- Realtime OS
- Embedded OS
2. 프로세스
2-1. 프로세스란?
- 프로그램이 실행 상태에 존재하는 것
- 사용자 혹은 프로세스가 프로세스를 생성할 수 있다. 생성 주체가 프로세스인 경우 부모 - 자식의 상속 관계를 갖는다.
- 프로세스의 3가지 구성요소 Instruction을 실행하기 위한 코드, 프로그램에 사용되는 데이터, 코드와 데이터가 실행되기 위해 사용되는 기타 컴퓨팅 자원인 컨텍스트로 구성된다.
2-2. 프로세스 상태
- Main Memory (Random Access Memory, RAM) 내부 바이트에는 adress 값이 부여되어 있다.
- Processor(CPU)가 Program Counter가 가리키고 있는 주소를 읽어 버스를 통해 메모리로 이동한다. 메모리에서 읽은 데이터 또한 버스를 경유해 CPU로 가져와 프로그램을 실행시킨다.
- 시간의 흐름에 따라 프로세스 내부에 주소값을 실행하는데, Time Out 후 실행되는 프로세스가 변경될 때마다 Dispatcher Program (OS)이 호출되어 다음 실행한 프로세스를 결정한다.
- 예외적으로 프로세스 내부에 입출력 요청이 있는 경우 System Call이 호출된다. 입력이 들어오는 대기 시간 동안 다른 프로세스를 처리한다.
- 정리하면 OS는 시스템 내부에서 계속 작동되고 있는 것이 아닌, 실행되는 프로그램 (프로세스) 사이 사이에 호출 및 실행된다.
2-3. 언제 프로세스를 끝내는가
- 마지막 Instruction까지 정상적으로 호출하였을 때
- 부모 프로세스의 요청에 의해
- 정의되지 않은 Instruction이 호출되었을 때 (에러)
- 보안을 위협하는 프로세스가 존재할 때 (에러)
DSCU (CNU) 운영체제 과목을 수강 후 복습하면서 정리한 강의 요약본입니다.