1. 운영체제(Operating System)
운영체제는 컴퓨터 자원을 효율적으로 관리하고 사용자가 편리하게 컴퓨터를 활용할 수 있는 환경을 제공하는 시스템 소프트웨어입니다.
1.1 운영체제의 주요 목적 및 기능
1.2 운영체제 구성 요소
- 커널 (Kernel)
운영체제의 중심부로 하드웨어를 직접 관리하고 제어
- 시스템 호출 (System Call)
사용자 프로그램이 운영체제(커널) 권한이 필요한 작업을 요청하는 방법
2. 운영체제 연산: 커널과 시스템 호출
운영체제는 인터럽트 기반(interrupt driven)으로 동작하며, 주로 사용자 모드(User Mode)와 커널 모드(Kernel Mode)로 구분하여 실행됩니다.
2.1 트랩과 시스템 호출
- 트랩 (Trap)
오류 발생 시 또는 운영체제 서비스 요청 시 발생하는 소프트웨어 인터럽트
- 시스템 호출 (System Call)
사용자 프로그램이 운영체제에 특정 작업을 요청하는 방법 (트랩 통해 실행)
2.2 사용자 모드와 커널 모드
| 구분 | 사용자 모드 (User Mode) | 커널 모드 (Kernel Mode) |
|---|
| 실행 환경 | 일반 응용 프로그램 실행 환경 | 운영체제 핵심 기능 실행 환경 |
| 접근 권한 | 하드웨어 직접 접근 불가 | 하드웨어 직접 접근 가능 |
| 명령어 실행 | 제한된 명령어만 실행 가능 | 모든 명령어 실행 가능 |
| 역할 | 시스템 호출을 통해 운영체제 서비스 요청 | 프로세스, 메모리 관리, 장치 제어 수행 |
- 시스템은 보통 커널 모드에서 부팅되고, 응용 프로그램 실행 시 사용자 모드로 전환
- 입출력 등 권한이 필요한 작업 시 시스템 호출로 커널 모드 전환하여 보안과 안정성 확보
2.3 커널과 쉘
- 커널
운영체제 핵심 부분, 하드웨어 직접 관리, 프로세스/메모리/파일 시스템/입출력 장치 관리
- 쉘 (Shell)
사용자와 운영체제(커널) 사이 인터페이스 역할, 명령어 해석 및 실행, 결과 전달
3. 운영체제 구조
- 간단한 구조 (Simple Structure)
초기 시스템에 사용 (MS-DOS, 초기 UNIX)
- 계층적 접근 (Layered Approach)
운영체제를 계층별로 모듈화 (THE 운영체제, OS/2)
- 마이크로커널 (Microkernel)
핵심 기능만 커널에 두고 나머지는 사용자 공간에서 수행 (Mach 운영체제)
- 모놀리식 커널 (Monolithic Kernel)
모든 핵심 기능을 커널 내부에 포함 (Linux, UNIX)
4. 운영체제 발달 과정
| 운영 방식 | 특징 |
|---|
| 일괄처리(배치 시스템) | 데이터 모아 한꺼번에 처리, CPU 유휴 시간 발생 |
| 다중 프로그래밍 시스템 | 하나의 CPU가 여러 프로그램 동시에 실행, CPU 활용도 향상 |
| 시분할 시스템 | 여러 사용자가 동시에 프로그램 실행, CPU 시간 분할 |
| 다중 처리 시스템 | 여러 CPU가 병렬 처리, CPU 간 부하 분산 중요 |
| 실시간 처리 시스템 | 즉각적 데이터 처리, 응답 시간 매우 짧음 |
| 다중 모드 처리 시스템 | 여러 처리 방식을 조합하여 유연성 향상 |
| 분산 처리 시스템 | 여러 컴퓨터가 네트워크로 작업 공유 및 협력 |
프로세스(Process)
1. 프로세스 개요
- 프로세스 정의
현재 실행 중이거나 곧 실행 가능한 PCB(프로세스 제어 블록)를 가진 프로그램
- 특징
실행 중인 프로그램, 비동기적 활동, 살아 있는 프로그램, PCB 보유
1.1 프로그램과 프로세스 차이
| 구분 | 프로그램 (Program) | 프로세스 (Process) |
|---|
| 정의 | 디스크에 저장된 수동적 실체 | 실행 흐름을 가진 능동적 실체 |
| 특성 | 정적인 파일 | 동적 실행 상태, 프로그램 카운터 및 PCB 포함 |
1.2 프로세스의 메모리 구조
- 코드(Code) 영역: 실행 가능한 프로그램 코드
- 데이터(Data) 영역: 전역 변수, 정적 변수
- 힙(Heap) 영역: 동적 메모리 할당 영역 (malloc 등)
- 스택(Stack) 영역: 지역 변수, 함수 호출 인자, 복귀 주소
2. 프로세스 제어 블록(PCB)
2.1 PCB 주요 정보
- 프로세스 상태 (대기, 실행, 준비 등)
- 프로세스 ID
- 프로그램 카운터(PC)
- 레지스터 정보
- 메모리 관리 정보
- 계정 정보 (CPU 사용 시간 등)
- 입출력 정보
2.2 PCB 역할
- 프로세스 상태 저장
- 문맥 교환 시 프로세스 정보 복원
3. 프로세스 상태와 상태 전이
3.1 프로세스 상태
- 생성 상태 (Created)
- 준비 상태 (Ready)
- 실행 상태 (Running)
- 대기 상태 (Waiting/Blocked)
- 지연 준비 상태 (Suspended Ready)
- 지연 대기 상태 (Suspended Waiting)
3.2 상태 전이
| 이벤트 | 상태 전이 |
|---|
| 디스패치 | 준비 상태 → 실행 상태 (CPU 할당) |
| 할당 시간 초과 | 실행 상태 → 준비 상태 |
| 블록 | 실행 상태 → 대기 상태 |
| 웨이크업 | 대기 상태 → 준비 상태 |
4. 프로세스와 스레드
4.1 프로세스와 스레드 비교
| 구분 | 프로세스 (Process) | 스레드 (Thread) |
|---|
| 정의 | 독립적 메모리 공간 가진 실행 중 프로그램 | 프로세스 내 최소 실행 단위 |
| 메모리 | 독립적 메모리 공간 | 메모리와 자원 공유 |
| 관리 | 운영체제에 의해 관리 | 프로세스 내에서 다중 작업 수행 가능 |
| 포함 관계 | 여러 스레드 포함 가능 | 하나 프로세스 내 여러 스레드 가능 |
4.2 싱글 스레드와 멀티 스레드
- 싱글 스레드: 순차 처리, 구현 간단
- 멀티 스레드: 병렬 처리, 응답성 향상, 동기화 문제 가능
4.3 커널 스레드와 사용자 스레드
| 구분 | 커널 스레드 (Kernel Thread) | 사용자 스레드 (User Thread) |
|---|
| 관리 | 운영체제 커널이 직접 관리 | 사용자 공간에서 관리 |
| 생성 및 관리 | 시스템 호출 필요 | 커널 개입 없이 생성 및 관리 가능 |
| 특징 | 안정성 높음, 전환 비용 발생 | 빠르고 효율적, 하나 블록 시 전체 영향 |
느낀점
중간고사때 했던건데 다시할려니까 어렵네요 역시 공부는 끝이 없당
마크다운으로 테이블 첨 만들어보는데 생각보다 어렵네요.
오에스 사랑합니다.