01. 운영체제를 알아야 하는 이유
- 운영체제(Operating System)
- 시스템 자원 (자원): 프로그램 실행에 필요한 요소들을 의미 (CPU, 메모리, 보조기억장치, 입출력 장치 등)
- 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 역할
- OS는 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 올바르게 실행되도록 돕는 역할
- 영역
- 커널 영역 (Kernel Space): OS가 항상 컴퓨터가 부팅될 때 적재되는 공간
- 사용자 영역 (User Space): 사용자가 이용하는 응용 프로그램이 적재되는 공간 (커널 영역을 제외한 공간)
- 응용 프로그램 (Application Software): 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램을 의미
- 운영체제를 알아야 하는 이유
- 하드웨어의 상태를 알 수 있고, 코드 실행과 하드웨어에서 문제를 알려줌으로써 문제 해결에 도움이 됨
02. 운영체제의 큰 그림
- 운영체제는 사용자가 실행하는 프로그램을 위한 프로그램
- 커널 (Kernel)
- 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 등 운영체제의 핵심 서비스를 담당하는 부분
- 운영체제가 제공하는 서비스 중 커널에 포함되지 않는 서비스
- 사용자 인터페이스(UI: User Interface): 사용자가 컴퓨터와 상호작용할 수 있는 통로
- 그래픽 유저 인터페이스(GUI: Graphical User Interface): 그래픽을 기반으로 컴퓨터와 상호작용
- 커맨드 라인 인터페이스(CLI: Command Line Interface): 명령어를 기반으로 컴퓨터와 상호작용
- 사용자 인터페이스(UI: User Interface): 사용자가 컴퓨터와 상호작용할 수 있는 통로
- 이중 모드와 시스템 호출
- OS는 사용자가 실행하는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지, 자원을 보호
- 이중 모드(Dual Mode): CPU가 명령어를 실행하는 모드를 사용자 모드와 커널 모드로 구분하는 방식
- 사용자 모드(User Mode): 일반적인 응용프로그램
- 커널 모드(Kernel Mode): 운영체제 서비스를 제공받을 수 있는 실행 모드
- 커널 영역에서 실행할 수 있는 모드,
- 자원에 접근 가능
- 시스템 호출(System Call): 운영체제 서비스를 제공받기 위한 요청
- 사용자 모드로 실행되는 프로그램은 시스템 호출을 통해 커널 모드로 전환하여 운영체제 서비스를 제공받음
- 일종의 인터럽트(Interrupt)
- 소프트웨어 인터럽트: 인터럽트를 발생시키는 특정 명령어에 의해 발생
- 처리 순서
- 시스템 호출을 발생시키는 명령어 실행
- CPU는 지금까지의 작업을 백업
- 커널 영역 내에 시스템 호출을 수행하는 코드(인터럽트 서비스 루틴)를 실행
- 응용프로그램으로 복귀하여 실행 진행
- 운영체제의 핵심 서비스
- 프로세스 관리/자원 접근 및 할당/파일 시스템 관리
- 프로세스 관리
- 프로세스 (Process): 실행 중인 프로그램
- 일반적으로 하나의 CPU는 한 번에 하나의 프로세스만 실행 가능
- 따라서 여러 프로세스를 조금씩 번갈아가며 실행 (전환 반복)
- 주요 용어: 프로세스 동기화, 교착 상태
- 자원 접근 및 할당
- 프로세스들이 사용할 자원에 접근/조작을 통해 프로세스에게 필요한 자원을 할당
- CPU
- CPU 스케줄링: OS가 프로세스들에 공정하게 CPU를 할당하기 위해 어떤 프로세스로부터 CPU를 사용할 것인지, 얼마나 오래 사용하게 할 것인지 결정
- 메모리
- 같은 프로세스라도 실행할 때마다 적재되는 주소가 달라질 수 있음
- OS가 프로세스에게 어떻게 메모리를 할당하는지, 메모리가 부족할 경우 이를 어떻게 극복하는지를 다움
- 입출력장치
- 인터럽트 서비스 루틴: 운영체제가 제공하는 기능 (커널 영역)
- 인터럽트를 처리하는 프로그램(인터럽트 서비스 루틴)을 제공함으로써 입출력 작업을 수행
- 파일 시스템 관리
- 파일 시스템(File System): 파일들을 디렉터리로 묶어 관리하는 서비스
03. 추가
- 가상 머신(Virtual Machine): 소프트웨어적으로 만들어낸 가상 컴퓨터
- 새로운 운영체제와 응용 프로그램을 설치하고 실행할 수 있음
- 가상 머신 또한 응용 프로그램이므로 사용자 모드로 작동
- 가상화를 지원하는 CPU는 커널 모드와 사용자 모드 이외에 가상 머신을 위한 모드인 하이퍼바이저 모드를 따로 둠
- 가상 머신 상에서 작동하는 응용프로그램들은 하이퍼바이저 모드로써 가상 머신에 설치된 운영체제로부터 운영체제 서비스를 받을 수 있음
- 시스템 호출의 종류
- 운영체제 서비스를 제공받기 위한 방법
- 시스템 호출의 종류
- 프로세스 관리
- fork(): 새 자식 프로세스 생성
- execve(): 프로세스 실행(메모리 공간을 새로운 프로그램의 내용으로 덮어 씌움)
- exit(): 프로세스 종료
- waitpid(): 자식 프로세스가 종료될 때까지 대기
- 파일 관리
- open(): 파일 열기
- close(): 파일 닫기
- read(): 파일 읽기
- write(): 파일 쓰기
- stat(): 파일 정보 획득
- 디렉터리 관리
- chdir(): 직업 디렉터리 변경
- mkdir(): 디렉터리 생성
- rmdir(): 비어 있는 디렉터리 삭제
- 파일 시스템 관리
- mount(): 파일 시스템 마운트
- unmount(): 파일 시스템 마운트 해제
- 프로세스 관리
'CS 상식 - 운영체제' 카테고리의 다른 글
[CS 상식 - 운영체제] 동기화 (1) | 2025.02.19 |
---|---|
[CS 상식 - 운영체제] CPU 스케줄링 알고리즘 (1) | 2025.02.14 |
[CS 상식 - 네트워크] CPU 스케줄링 (0) | 2025.02.14 |
[CS 상식 - 운영체제] 병렬과 병행 (2) | 2025.02.10 |
[CS 상식 - 운영체제] 프로세스와 스레드 (스터디 2) (0) | 2025.02.10 |