navis
운영체제 (기말 준비) 본문
1강: 운영체제 개요
운영체제 정의
운영체제(OS)는 컴퓨터 시스템 자원을 관리하고, 사용자와 응용 프로그램이 하드웨어를 효율적으로 사용할 수 있도록 서비스를 제공하는 시스템 소프트웨어입니다. 운영체제는 컴퓨터의 핵심 자원인 CPU, 메모리, 디스크 드라이브, 입력 및 출력 장치 등을 관리합니다.
모드
커널 모드(Kernel Mode): 운영체제의 핵심 부분인 커널이 실행되는 모드로, 하드웨어를 직접 제어할 수 있습니다. 커널 모드에서는 모든 명령을 실행할 수 있으며, 시스템의 안전성과 보안을 보장하기 위해 필요한 모드입니다.
사용자 모드(User Mode): 응용 프로그램이 실행되는 모드로, 하드웨어를 직접 제어할 수 없으며, 시스템 호출(System Call)을 통해 커널에 요청합니다. 사용자 모드는 시스템의 안전성과 보안을 유지하기 위해 제한된 권한을 갖습니다.
운영체제 구성요소
프로세스 관리자: 프로세스 생성, 스케줄링, 종료 등의 기능을 담당하며, 프로세스 간의 CPU 자원을 효율적으로 배분합니다.
메모리 관리자: 메모리 할당 및 해제, 가상 메모리 관리 등의 기능을 수행하여 프로그램이 효율적으로 메모리를 사용할 수 있도록 합니다.
장치 관리자: 입출력 장치를 제어하고, 드라이버 관리를 통해 하드웨어와의 인터페이스를 제공합니다.
파일 관리자: 파일 생성, 수정, 삭제, 접근 제어 등의 기능을 수행하여 파일 시스템을 관리합니다.
운영체제 유형
일괄처리 시스템 (Batch Processing): 여러 작업을 모아서 한꺼번에 처리하는 방식으로, 작업의 일괄 처리가 가능합니다.
시분할 시스템 (Time-Sharing): 여러 사용자가 동시에 시스템을 사용할 수 있도록 지원하는 방식으로, 각 사용자에게 일정 시간 동안 CPU를 할당합니다.
실시간 시스템 (Real-Time): 즉각적인 응답이 요구되는 시스템으로, 엄격한 시간 제약을 가진 작업을 처리합니다.
분산 운영체제 (Distributed Operating System): 여러 컴퓨터가 협력하여 작업을 수행하는 시스템으로, 네트워크를 통해 자원을 공유합니다.
2강: 프로세스와 쓰레드
프로세스 정의
프로세스는 실행 중인 프로그램을 의미하며, 프로그램의 인스턴스라고 할 수 있습니다. 프로세스는 CPU, 메모리 등 시스템 자원을 할당받아 작업을 수행합니다.
프로세스 제어 블록 (PCB)
프로세스 제어 블록은 프로세스 상태, 프로그램 카운터, CPU 레지스터, 메모리 관리 정보 등을 포함하는 자료 구조입니다. PCB는 운영체제가 프로세스를 관리하는 데 필요한 정보를 저장합니다.
프로세스 상태
생성 (New): 프로세스가 생성된 상태입니다.
준비 (Ready): 프로세스가 실행을 기다리는 상태입니다.
실행 (Running): 프로세스가 현재 CPU에서 실행 중인 상태입니다.
대기 (Waiting): 프로세스가 특정 이벤트를 기다리는 상태입니다.
종료 (Terminated): 프로세스가 실행을 마치고 종료된 상태입니다.
쓰레드 정의
쓰레드는 프로세스 내에서 실행되는 작업의 단위입니다. 여러 쓰레드가 병행하여 실행되며, 하나의 프로세스 내에서 자원을 공유할 수 있습니다.
쓰레드 유형
사용자 수준 쓰레드 (User-Level Threads): 운영체제의 지원 없이 사용자 프로그램에서 구현되는 쓰레드입니다.
커널 수준 쓰레드 (Kernel-Level Threads): 운영체제가 직접 관리하는 쓰레드로, 커널에서 쓰레드를 스케줄링합니다.
3강: 스케줄링
스케줄링 단계
상위단계: 작업 스케줄링을 통해 작업의 실행 순서를 결정합니다.
중간단계: 메모리 스케줄링을 통해 메모리 자원을 할당합니다.
하위단계: CPU 스케줄링을 통해 프로세스에 CPU를 할당합니다.
스케줄링 정책
선점 스케줄링 (Preemptive Scheduling): 프로세스를 중단시키고, 다른 프로세스에게 CPU를 할당할 수 있는 정책입니다. 인터럽트를 통해 실행 중인 프로세스를 강제로 멈추고, 다른 프로세스를 실행합니다.
비선점 스케줄링 (Non-Preemptive Scheduling): 프로세스가 자발적으로 CPU를 반납할 때까지 기다리는 정책입니다. 한 번 CPU를 할당받은 프로세스가 완료될 때까지 CPU를 점유합니다.
스케줄링 알고리즘
FCFS (First-Come, First-Served): 도착한 순서대로 프로세스를 처리하는 알고리즘입니다.
SJF (Shortest Job First): 실행 시간이 가장 짧은 작업을 먼저 처리하는 알고리즘입니다.
SRT (Shortest Remaining Time): 남은 실행 시간이 가장 적은 작업을 먼저 처리하는 알고리즘입니다.
RR (Round Robin): 시간 할당량을 이용한 순환 방식으로, 각 프로세스에 동일한 시간 할당량을 부여하여 순차적으로 실행합니다.
HRN (Highest Response Ratio Next): 응답 비율이 높은 작업을 우선 처리하는 알고리즘입니다.
다단계 피드백 큐 (Multilevel Feedback Queue): 여러 큐를 사용하여 프로세스의 우선순위를 동적으로 조정하는 알고리즘입니다.
4강: 병행성
병행성 정의
병행성은 여러 프로세스 또는 쓰레드가 동시에 수행되는 것을 의미합니다. 이는 실제로 동시에 실행되는 것이 아니라, 운영체제가 빠르게 전환하여 마치 동시에 실행되는 것처럼 보이게 합니다.
임계영역
임계영역은 여러 프로세스가 공유 자원에 접근하는 코드 영역입니다. 임계영역 문제는 두 프로세스가 동시에 접근하여 데이터 불일치가 발생하는 문제를 말합니다.
상호배제
상호배제는 여러 프로세스가 동시에 임계영역에 접근하지 않도록 하는 것을 의미합니다. 이는 임계영역 문제를 해결하기 위한 중요한 개념입니다.
동기화
동기화는 프로세스 간의 처리 순서를 결정하여 자원의 일관성을 유지하는 것을 의미합니다. 동기화를 통해 여러 프로세스가 협력하여 작업을 수행할 수 있습니다.
세마포어
세마포어는 상호배제 및 동기화 문제를 해결하기 위한 기법으로, P 연산과 V 연산을 통해 자원 접근을 제어합니다. 세마포어는 정수 값을 가지며, P 연산은 값을 감소시키고, V 연산은 값을 증가시킵니다.
5강: 상호배제 문제
생산자-소비자 문제
생산자-소비자 문제는 생산자가 데이터를 생성하고, 소비자가 데이터를 소비하는 문제입니다. 세마포어를 이용하여 생산자와 소비자 간의 상호배제 및 동기화 문제를 해결할 수 있습니다.
판독기-기록기 문제
판독기-기록기 문제는 다수의 판독기와 기록기가 공유 데이터를 접근하는 상황에서 발생합니다. 판독기와 기록기 간의 상호배제를 위해 세마포어를 사용할 수 있습니다.
프로세스 간 통신
프로세스 간 통신(IPC)은 프로세스들이 서로 데이터를 교환하는 방법을 의미합니다. IPC 방법에는 공유 메모리, 메시지 전달(직접, 간접) 등이 있습니다.
6강: 교착상태
교착상태 정의
교착상태(Deadlock)는 프로세스들이 서로 자원을 기다리며 대기 상태로 진행할 수 없는 상황을 의미합니다.
교착상태 필요조건
상호배제 (Mutual Exclusion): 자원이 한 번에 한 프로세스만 사용할 수 있습니다.
점유대기 (Hold and Wait): 자원을 점유한 상태에서 다른 자원을 기다립니다.
비선점 (No Preemption): 자원을 강제로 빼앗을 수 없습니다.
환형대기 (Circular Wait): 프로세스 간에 순환 대기 상태가 존재합니다.
자원할당 그래프
자원할당 그래프는 교착상태 발생 가능성을 확인하는 데 사용됩니다. 그래프의 사이클 여부를 통해 교착상태 발생 여부를 판단할 수 있습니다.
교착상태 처리 기법
예방 (Prevention): 교착상태 발생 조건을 사전에 차단합니다.
회피 (Avoidance): 자원 사용 정보를 사전에 활용하여 교착상태를 회피합니다.
탐지 및 복구 (Detection and Recovery): 교착상태 발생 시 희생자를 선택하여 프로세스를 중지하거나 자원을 선점합니다.
7강: 교착상태 회피 및 탐지
회피 기법
은행원 알고리즘 (Banker's Algorithm): 자원 할당 전에 시스템이 안전한 상태인지 확인하여 교착상태를 회피합니다.
탐지 및 복구
탐지: 교착상태 발생 여부를 탐지합니다.
복구: 교착상태 발생 시 프로세스를 중지하거나 자원을 선점하여 문제를 해결합니다.
8강: 메모리 관리
기억장치 구성
계층적 구조: 레지스터, 캐시, 메인 메모리, 보조 기억장치로 구성됩니다.
연속 메모리 할당
단일 프로그래밍: 하나의 프로세스가 전체 메모리를 사용하는 방식입니다.
다중 프로그래밍: 여러 프로세스가 메모리를 공유하는 방식입니다.
고정 분할 방식
고정 분할 방식은 메모리를 미리 정해진 크기로 나누는 방식으로, 내부 단편화 문제가 발생할 수 있습니다.
동적 분할 방식
동적 분할 방식은 필요에 따라 메모리를 할당하는 방식으로, 외부 단편화 문제가 발생할 수 있습니다. 이를 해결하기 위해 통합과 집약 기법이 사용됩니다.
메모리 배치기법
최초 적합 (First-Fit): 첫 번째로 맞는 빈 공간에 배치합니다.
후속 적합 (Next-Fit): 이전 검색 위치 이후의 첫 번째 빈 공간에 배치합니다.
최적 적합 (Best-Fit): 가장 작은 빈 공간에 배치합니다.
최악 적합 (Worst-Fit): 가장 큰 빈 공간에 배치합니다.
9강: 가상 메모리
가상 메모리 정의
가상 메모리는 물리적 메모리보다 큰 기억 공간을 사용할 수 있도록 하는 기술입니다. 이를 통해 프로그램은 자신의 메모리가 물리적으로 연속적이지 않더라도 큰 주소 공간을 사용할 수 있습니다.
주소 변환
주소 변환은 가상 주소를 물리적 주소로 변환하는 과정입니다.
기법
페이징 (Paging): 고정 크기의 페이지 단위로 메모리를 관리합니다.
세그먼테이션 (Segmentation): 다양한 크기의 세그먼트 단위로 메모리를 관리합니다.
페이지 호출 기법
요구 페이지 호출 (Demand Paging): 필요한 페이지만 호출합니다.
예상 페이지 호출 (Anticipatory Paging): 필요한 페이지를 미리 예상하여 호출합니다.
10강: 페이지 교체
페이지 교체 알고리즘
FIFO (First-In, First-Out): 가장 먼저 들어온 페이지를 교체합니다.
LRU (Least Recently Used): 가장 오랫동안 사용하지 않은 페이지를 교체합니다.
LFU (Least Frequently Used): 가장 적게 사용된 페이지를 교체합니다.
2차 기회 (Second Chance): FIFO에 참조 비트를 추가하여 교체를 결정합니다.
국부성
국부성(Locality)은 프로그램이 특정 부분을 집중적으로 참조하는 특성을 말합니다.
워킹 세트
워킹 세트(Working Set)는 최근에 참조한 페이지 집합을 유지하는 기법입니다.
11강: 장치 관리
장치 관리 유형
전용 장치 (Dedicated Device): 특정 프로세스가 독점적으로 사용하는 장치입니다.
공유 장치 (Shared Device): 여러 프로세스가 공유하는 장치입니다.
가상 장치 (Virtual Device): 물리적 장치를 가상화하여 사용합니다.
입출력 처리 방법
프로그램 입출력 (Programmed I/O): CPU가 직접 입출력을 처리합니다.
인터럽트 입출력 (Interrupt-Driven I/O): 입출력 완료 시 인터럽트를 발생시켜 처리합니다.
DMA (Direct Memory Access): CPU의 개입 없이 장치가 직접 메모리에 접근하여 데이터를 전송합니다.
버퍼링
단일 버퍼링 (Single Buffering): 하나의 버퍼를 사용하는 방식입니다.
이중 버퍼링 (Double Buffering): 두 개의 버퍼를 사용하는 방식으로, 하나의 버퍼가 입출력을 처리하는 동안 다른 버퍼는 데이터를 준비합니다.
순환 버퍼링 (Circular Buffering): 여러 개의 버퍼를 순환하며 사용하는 방식입니다.
스풀링
스풀링(Spooling)은 입출력 속도를 향상시키기 위해 데이터를 디스크에 임시 저장하는 방법입니다.
12강: 디스크 관리
디스크 스케줄링
디스크 스케줄링의 목표는 탐구 시간을 최소화하는 것입니다.
디스크 스케줄링 알고리즘
SSTF (Shortest Seek Time First): 가장 가까운 트랙부터 탐구합니다.
SCAN: 디스크 끝까지 갔다가 반대로 탐구합니다.
C-SCAN (Circular SCAN): 디스크 끝까지 갔다가 처음으로 돌아와 탐구합니다.
LOOK: 데이터가 있는 부분까지만 탐구합니다.
C-LOOK: 데이터가 있는 부분까지만 탐구하고 처음으로 돌아와 탐구합니다.
SLTF (Shortest Latency Time First): 회전 지연 시간을 최소화합니다.
파일 관리자
파일 관리자는 파일의 생성, 수정, 삭제, 공유, 백업, 보호 등의 기능을 수행합니다.
13강: 분산 시스템
분산 시스템 정의
분산 시스템은 네트워크를 통해 연결된 여러 프로세서 집합으로, 자원을 공유하고 작업을 협력하여 수행합니다.
분산 시스템의 장점
자원 공유: 여러 시스템 자원을 공유할 수 있습니다.
성능 향상: 병렬 처리로 성능을 향상시킬 수 있습니다.
신뢰성: 시스템 고장 시 다른 시스템이 대체할 수 있습니다.
통신 편리성: 원격 통신 및 협업이 가능합니다.
분산 파일 시스템
분산 파일 시스템은 원격 파일과 로컬 파일을 구별 없이 사용할 수 있도록 합니다.
분산 메모리
분산 메모리는 네트워크를 통해 메모리를 공유하는 방식입니다.
원격 프로시저 호출 (RPC)
원격 프로시저 호출은 원격지의 프로시저를 호출하여 실행하는 기법입니다.
14강: 운영체제 보안
보안 목표
기밀성 (Confidentiality): 정보의 비인가 노출을 방지합니다.
가용성 (Availability): 인가된 사용자가 언제든지 접근할 수 있도록 합니다.
무결성 (Integrity): 정보의 비인가 변경을 방지합니다.
정보 침해 위협
가로채기 (Interception): 정보 탈취를 의미합니다.
흐름 차단 (Interruption): 정보 흐름을 방해하는 것을 의미합니다.
변조 (Modification): 정보를 수정하는 것을 의미합니다.
위조 (Fabrication): 정보를 위조하는 것을 의미합니다.
접근제어
임의적 접근제어 (DAC): 소유자가 접근 권한을 결정합니다.
강제적 접근제어 (MAC): 중앙 관리자가 접근 권한을 결정합니다.
역할 기반 접근제어 (RBAC): 역할에 따라 접근 권한을 결정합니다.
암호 시스템
비밀키 암호화: 하나의 비밀키로 암호화 및 복호화합니다.
공개키 암호화: 공개키로 암호화하고 비밀키로 복호화합니다.
보안 모델
벨-라파듈라 모델 (Bell-LaPadula Model): 기밀성을 중심으로 한 보안 모델입니다.
비바 모델 (Biba Model): 무결성을 중심으로 한 보안 모델입니다.
15강: 특수 목적 운영체제
리눅스 커널
리눅스 커널은 일체형 구조를 가지고 있으며, 소스 코드가 공개되어 있습니다. 다양한 하드웨어 플랫폼을 지원하며, 커스터마이징이 가능합니다.
임베디드 시스템
임베디드 시스템은 특정 기능을 수행하기 위해 하드웨어와 소프트웨어가 결합된 시스템입니다. 일반적으로 작은 메모리와 제한된 자원을 가지고 있으며, 실시간 응답이 중요한 경우가 많습니다.
실시간 운영체제 (RTOS)
실시간 운영체제는 마감 시간 내에 결과를 얻기 위한 시스템으로, 정해진 시간 내에 작업을 완료해야 하는 경우에 사용됩니다. 예를 들어, 항공기 제어 시스템, 공장 자동화 시스템 등이 있습니다.
Windows
Windows 운영체제는 GUI 기반의 사용자 친화적인 인터페이스를 제공하며, NT 커널 구조를 가지고 있습니다. 멀티태스킹, 메모리 보호, 보안 기능을 지원합니다.
Android
Android는 리눅스 커널을 기반으로 한 운영체제로, 스마트폰과 태블릿 등 모바일 기기에 주로 사용됩니다. 다양한 애플리케이션을 실행할 수 있으며, 사용자 인터페이스와 멀티태스킹을 지원합니다.
'방송통신대 컴퓨터과학과' 카테고리의 다른 글
시뮬레이션 1강 (결정적 시뮬레이) (0) | 2024.08.20 |
---|---|
UNIX시스템 1강 (리눅스소개) (0) | 2024.08.19 |
파이썬 (기말 준비) (0) | 2024.05.26 |
JAVA (기말 준비) (0) | 2024.05.26 |
알고리즘 (기말 준비) (0) | 2024.05.26 |