09-1. 운영체제를 알아야 하는 이유
운영체제란
- 시스템자원 : 프로그램 실행에 마땅히 필요한 요소들. ex) CPU, 메모리, 보조기억장치, 입출력장치 등
- 운영체제 : 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 => 메모리에 적재
- 컴퓨터가 부팅될 때 메모리 내 커널 영역이라는 공간에 따로 적재되어 실행.
- 사용자 영역 : 커널 영역을 제외한 나머지 영역, 사용자가 이용하는 응용 프로그램이 적재되는 영역
- 운영체제는 실행할 프로그램을 메모리에 적재하고, 더 이상 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리 자원을 관리한다.
- 운영체제는 최대한 공정하게 여러 프로그램에 CPU 자원을 할당한다.
- 응용 프로그램과 하드웨어 사이에서 응용 프로그램에 필요한 자원을 할당하고, 응용 프로그램이 올바르게 실행되도록 관리하는 역할.
운영체제를 알아야 하는 이유
- 운영체제는 현재 하드웨어의 상태는 어떠한지, 코드가 어떻게 실행되었는지, 하드웨어 상에 어떤 문제가 있었는지 등을 상세히 알려주고, 이를 통해 문제 해결의 실마리를 찾을 수 있다. => 하드웨어와 프로그램을 더 깊이 이해할 수 있다.
09-2. 운영체제의 큰 그림
운영체제의 심장, 커널
- 핵심서비스 : 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능.
- 커널 : 운영체제의 핵심 서비스를 담당하는 부분.
- 커널에 포함되지 않는 서비스 : 사용자 인터페이스(윈도우의 바탕함녀과 같이 사용자가 컴퓨터와 상호작용할 수 있는 통로. 그래픽유저 인터페이스, 커맨드 라인 인터페이스가 있다.)
이중모드와 시스템 호출
- 운영체제는 응용 프로그램들이 자원에 접근하려고 할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호한다.
- 이중모드 : CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식.
- 사용자 모드 : 운영체제 서비스를 제공받을 수 없는 실행 모드.
- 커널 모드 : 운영체제 서비스를 제공받을 수 있는 실행 모드.
- * CPU가 사용자 모드로 실행중인지, 커널 모드로 실행중인 지 플래그 레지스터 속 슈퍼바이저 플래그를 보면 슈퍼바이저 플래가가 1일경우 커널모드로 실행중, 0일 경우 사용자모드로 실행중
- 시스템 호출 : 운영체제 서비스를 제공받기 위한 요청. 사용자모드로 실행되는 프로그램은 시스템 호출을 통해 커널 모드로 전환하여 운영체제 서비스를 제공받을 수 있다.
- 소프트웨어 인터럽트 : 인터럽트는 입출력장치에 의해 발생하기도 하지만 인터럽트를 발생시키는 특정 명령어에 의해 발생.
운영체제의 핵심 서비스
- 프로세스 관리
- 프로세스 : 실행 중인 프로그램. 일반적으로 하나의 CPU는 한 번에 하나의 프로세스만 실행가능하기 때문에 CPU는 프로세스들을 번갈아 가며 실행.
- 자원 접근 및 할당
- CPU
- CPU 스케줄링 : 운영체제는 프로세스들에 공정하게 CPU를 할당하기 위해 어떤 프로세스부터 CPU를 이용하게 할 것인지, 얼머나 오래 CPU를 이용하게 할지를 결정할 수 있어야 한다.
- 메모리
- 운영체제는 새로운 프로세스가 적재될 때마다 어느 주소에 적재해야 할지를 결정해야한다.
- 입출력장치
- 운영체제는 인터럽트를 처리하는 프로그램, 즉 인터럽트 서비스 루틴을 제공함으로써 입출력작업을 수행한다.
- CPU
- 파일 시스템 관리
※ 좀 더 알아보기
- 가상 머신 : 소프트웨어적으로 만들어낸 가상 컴퓨터. 가상머신을 설치하면 새로운 운영체제와 응용 프로그램을 설치하고 실행할 수 있다. 가상머신에 설치된 운영체제또한 사용자모드로 작동. 커널모드로 전환되어야함 => 가상화를 지원하는 CPU는 커널 모드와 사용자 모드 이외에 가상 머신을 위한 모드인 하이퍼 바이저 모드를 따로 둔다.
- 시스템 호출의 종류
종류 | 시스템 호출 | 설명 |
프로세스 관리 | fork() | 새 자식 프로세스 생성 |
execve() | 프로세스 실행(메모리 공간을 새로운 프로그램의 내용으로 덮어씌움) | |
exit() | 프로세스 종료 | |
waitpid() | 자식 프로세스가 종료할 때까지 대기 | |
파일관리 | open() | 파일 열기 |
close() | 파일 닫기 | |
read() | 파일 읽기 | |
write() | 파일 쓰기 | |
stat() | 파일 정보 획득 | |
디렉터리 관리 | chdir() | 작업 디렉터리 변경 |
mkdir() | 디렉터리 생성 | |
rmdir() | 비어 있는 디렉터리 삭제 | |
파일 시스템 관리 | mount() | 파일시스템 마운트 |
umount() | 파일 시스템 마운트 해제 |
'CS공부🖥️ > 운영체제' 카테고리의 다른 글
혼공 컴+운 chapter11. CPU 스케줄링 (0) | 2025.01.30 |
---|---|
혼공 컴+운 chapter10. 프로세스와 스레드 (0) | 2025.01.28 |
혼공 컴+운 chapter 8. 입출력장치 (0) | 2025.01.22 |
혼공 컴+운 chapter7. 보조기억장치 (1) | 2025.01.22 |
혼공 컴+운 chapter6. 메모리와 캐시 메모리 (0) | 2025.01.21 |