컴퓨터구조와 운영체제
운영체제의 큰 그림
김검정
2024. 8. 28. 11:00
다음의 질문에 답할 수 있는지 생각해보자
- 커널이란 무엇인가?
- 운영체제의 서비스 종류는 무엇이 있는가?
- 시스템 콜과 이중 모드는 무엇인가?
운영체제의 심장, 커널
운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나이다.
구글에 리눅스 코드의 줄이 몇개인지 검색해보면 2,700백만 줄이라는 것을 볼 수 있다.
운영체제는 종류가 다양하고, 제공하는 기능도 다양하다.(가장 핵심적인 서비스는 존재한다)
이러한 운영체제의 핵심 서비스를 담당하는 부분을 커널(kernel)이라고 한다.
그럼 운영체제에는 속하지만 커널에는 속하지 않는 기능도 있을까? 유저 인터페이스(User Interface)가 여기에 속한다. 사용자와 컴퓨터 간의 통로일 뿐 운영체제의 핵심 기능(커널)은 아니다.
이중 모드와 시스템 호출
사용자가 실행하는 프로그램은 자원에 직접 접근할 수 있을까? ex) 메모리, CPU, 하드디스크 등등...
정답은 안된다. 자원에 직접 접근하는 것은 위험하다. 운영체제는 응용 프로그램들이 자원에 접근하려 할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호한다.
응용 프로그램이 하드 디스크에 접근하는 것을 그림으로 살펴보자.
운영체제를 통해서 접근하는 것을 볼 수 있다.
이중 모드
- CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식
- 사용자 모드 : 운영체제 서비스를 제공받을 수 없는 실행 모드, 커널 영역의 코드를 실행할 수 없는 실행 모드, 자원 접근 불가
- 커널 모드 : 운영체제의 서비스를 제공받을 수 있는 실행 모드, 자원 접근을 비롯한 모든 명령어 실행 가능
시스템 호출
- 커널 모드로 전환하여 실행하기 위해 호출
- 일종의 소프트웨어 인터럽트이다. (시스템 호출이 처리되는 방식은 하드웨어 인터럽트 처리 방식과 유사하다)
운영체제의 핵심 서비스
- 프로세스 관리
- 자원 접근 및 할당
- 파일 시스템 관리
프로세스 관리
- 프로세스 == 실행 중인 프로그램
- 수많은 프로세스들이 동시에 실행된다
- 동시다발적으로 실행/생성/삭제되는 다양한 프로세스를 일목요연하게 관리한다(=프로세스와 스레드, 프로세스 동기화, 교착상태 해결)
자원 접근 및 할당
- CPU (CPU 스케줄링 : 어떤 프로세스를 먼저, 얼마나 오래 실행할까?)
- 메모리 (페이징, 스와핑 등등)
- 입출력 장치
파일 시스템 관리
- 관련된 정보를 파일이라는 단위로 저장 장치에 보관
- 파일들을 묶어 폴더(디렉터리) 단위로 저장 장치에 보관