운영체제 정의
- 컴퓨터 시스템의 네 가지 구성 요소
- 사용자 (Users)
- 애플리케이션 (Applications) (워드 프로세서, 웹 브라우저, 게임, …)
- 운영체제 (Operating System)
- 하드웨어 (Hardware) (CPU, 메모리, I/O 장치)
운영체제 정의
- 운영체제 (Operating System)
- 애플리케이션과 컴퓨터 하드웨어 사이의 중개자(intermediary) 역할을 함.
- 컴퓨터 하드웨어 자원을 관리.
- 애플리케이션을 위한 일부 서비스를 제공.
- 사용자 관점 (User View)
- 운영체제가 애플리케이션을 실행.
- 운영체제가 컴퓨터 시스템을 사용하기 편리하게 만듦.
- 시스템 관점 (System View)
- 운영체제는 자원 할당자 (Resource Allocator).
- 하드웨어 자원: CPU, 메모리, I/O 장치.
- 소프트웨어 자원: 파일, 소켓, 세마포어 등.
- 운영체제는 제어 프로그램 (Control Program).
- 애플리케이션 실행과 I/O 장치의 동작을 제어.
- 운영체제는 자원 할당자 (Resource Allocator).
- 운영체제의 정의
- 모호함!
- "운영체제를 주문할 때 벤더가 제공하는 모든 것"
- 예: Microsoft Windows, Unix, Linux, Android, iOS 등.
- 이 강의에서 사용하는 운영체제의 정의: "컴퓨터에서 항상 실행 중인 프로그램"
- 커널 (Kernel)
- 나머지는 시스템 프로그램 또는 애플리케이션 프로그램.
컴퓨터 시스템 동작
- 컴퓨터 시스템 구성
- 각 I/O 디바이스 컨트롤러(device controller)는 특정 device 유형을 담당.
- 각 I/O 디바이스 컨트롤러는 로컬 버퍼 (Local Buffer)를 가짐.
- 디스크 I/O 동작
- 디스크 컨트롤러는 디바이스와 디바이스 컨트롤러의 로컬 버퍼 사이에서 데이터를 이동.
- CPU는 메인 메모리와 디바이스 컨트롤러의 로컬 버퍼 사이에서 데이터를 이동.
- CPU와 I/O 장치는 독립적으로 작업을 수행 가능.
- 디바이스 컨트롤러는 작업이 완료되면 인터럽트(interrupt)를 통해 CPU에 알림.
- 인터럽트 처리(interrupt handling)
- 인터럽트 발생 시,
- CPU는 현재 작업을 중단하고 인터럽트 서비스 루틴(interrupt service rountine, ISR)을 호출.
- 인터럽트 발생 시,
컴퓨터 시스템 동작
Storage Structure
- 주 메모리 (Main Memory)
- CPU가 직접 접근할 수 있는 저장 매체.
- DRAM (Dynamic Random Access Memory)
- 휘발성(volatile)
- 보조 메모리 (Secondary Memory)
- 대용량 비휘발성(nonvolatile) 저장 용량을 제공하는 저장 매체.
- HDD (Hard Disk Drives)
- NAND 플래시 메모리
- SSD (Solid State Drives)
- 저장 계층 구조
- 다양한 저장 매체의 특성
캐싱 (Caching)
- 프로그램 실행을 위해,
- 명령어 또는 데이터는 HDD에서 CPU 레지스터로 로드되어야 함.
- 캐싱 (Caching)
- 데이터를 더 빠른 저장 매체에 저장하여, 동일한 데이터의 향후 요청에 대한 접근 속도를 향상시킴.
- More about Caching
- 시스템의 여러 레벨 또는 다양한 환경에서 캐싱이 수행됨.
- CPU 캐시, 운영체제의 버퍼 캐시, 디스크 캐시 등.
- 웹 캐시, 스트리밍 캐시 등.
- 캐시를 먼저 확인하여 요청된 데이터가 있는지 확인.
- 데이터가 있으면, 캐시에서 직접 사용.
- 없으면, 데이터를 캐시에 복사하여 사용.
- 일반적으로 캐시 크기는 제한적.
- 교체 정책(replacement policy)이 필요.
- 예: LRU, LFU, Clock 등.
- 시스템의 여러 레벨 또는 다양한 환경에서 캐싱이 수행됨.
- 캐싱된 데이터는 신중하게 처리해야 함.
- 하나의 데이터에 대해 여러 복사본이 존재할 수 있음. --> 데이터 불일치 발생 가능성.
- 다중 프로세서(multiprocessor) 환경에서
- 캐시 일관성 (Cache Coherency)
- 다중 프로세서 환경에서 모든 CPU가 가장 최근의 값을 캐시에 가지고 있어야 함.
- 캐시 일관성 (Cache Coherency)
- 분산 환경에서는 상황이 더 복잡함.
운영체제 구조
- 멀티프로그래밍 (Multiprogramming)
- 동시에 여러 프로그램을 메모리에 유지하고, CPU가 프로그램들 사이에 다중화(multiplexed) 되어 CPU utilization을 높인다.
- 여러 개의 프로그램이 동시에 처리되는 것처럼 처리하는 방식을 말함
- 단일 프로그램이 CPU 및 I/O 장치를 항상 바쁜 상태로 유지할 수 없습니다.
- 프로그램 1개만으로 CPU Utilization을 높이지 못해서, CPU가 놀고 있다는 의미
- CPU가 항상 실행할 프로그램을 갖도록 프로그램을 구성합니다.
- 하나의 프로그램을 선택하여 스케줄링을 통해 실행합니다.
- 하나의 프로그램이 I/O를 기다리는 동안, 다른 프로그램이 CPU를 사용.
- 동시에 여러 프로그램을 메모리에 유지하고, CPU가 프로그램들 사이에 다중화(multiplexed) 되어 CPU utilization을 높인다.
- Timesharing
- Timesharing은 multiprogramming의 논리적 확장임.
- UNIX가 좋은 예.
- 사용자는 키보드나 마우스를 사용하여 프로그램에 명령을 내리고, 즉시 결과를 기다림.
- 응답 시간(response time)은 짧아야 함 (일반적으로 1초 미만).
- CPU는 프로그램을 자주 전환하여 각 프로그램과 상호작용할 수 있게 함.
- 응답 시간(response time)을 최소화.
운영체제 동작
- 운영체제는 이벤트 구동형 (Event Driven).
- 프로그램, I/O 요청, 사용자가 없을 때,
- 운영체제는 어떤 이벤트가 발생할 때까지 조용히 대기함.
- 프로그램, I/O 요청, 사용자가 없을 때,
- Events
- 하드웨어 인터럽트
- 디스크 인터럽트, 키보드 인터럽트, 마우스 인터럽트 등.
- Software trap (exceptions)
- 0으로 나누기, 잘못된 메모리 접근, 시스템 호출 등.
- 기타 오류
- 무한 루프
- 하드웨어 인터럽트
- Dual Mode
- 사용자 모드 (User Mode)와 커널 모드 (Kernel Mode)
- 특권 명령(Privileged instructions)은 커널 모드에서 실행 가능.
- 모드 비트 (Mode Bit)는 하드웨어에 의해 제공됨 (프로그램 상태 워드, PSW).
- 사용자 모드(1) 또는 커널 모드(0).
- 예: System call은 모드를 Kernel Mode로 변경하고 반환 시 User Mode로 재설정.
프로세스 관리
- 프로세스(process)란 실행 중인 프로그램(program in execution).
- 프로그램은 수동적인(passive) entity, 프로세스는 능동적인(active) entity.
- 시스템 내의 작업 단위.
- 프로세스는 작업을 수행하기 위해 resource가 필요.
- CPU, 메모리, I/O 장치, 파일 등.
- 프로세스 관리 활동
- CPU에서 프로세스 스케줄링.
- 프로세스 생성 및 삭제.
- 프로세스 동기화 메커니즘.
- 프로세스 간 통신 메커니즘.
- Deadlock 처리.
메모리 관리
- 메모리 관리 활동
- 현재 어느 부분의 메모리가 누구에 의해 사용 중인지 추적.
- 어느 프로세스와 데이터를 메모리로 이동할지 결정.
- 필요한 경우 메모리 공간 할당 및 해제.
- 가상 메모리 시스템(Virtual memory system)
- 다양한 형태의 데이터 저장소(DRAM 및 디스크)를 가상화하여 하나의 메모리, "가상" 메모리처럼 설계할 수 있게 함.
저장소 관리
- 운영체제는 information storage의 일관된 논리적 뷰를 제공.
- 파일 (File)
- 논리적 저장 단위.
- 파일은 일반적으로 디렉토리로 구성됨.
- 파일 시스템 (File System)
- 데이터를 저장, 검색 및 업데이트하는 수단이자, 장치의 사용 가능한 공간을 관리.
- 파일 (File)
- 파일 시스템 활동
- 파일 및 디렉토리 생성 및 삭제.
- 파일 및 디렉토리 조작을 위한 원시 기능 지원.
- 파일을 보조 저장소(secondary storage)에 매핑.
저장소 관리 (Storage Management)
- 대용량 저장소 관리
- 일반적으로 디스크 (Disks)가 데이터를 저장하는 데 사용됨.
- 컴퓨터 동작 속도는 전체적으로 디스크 서브시스템 및 알고리즘에 의존.
- 디스크 저장소 활동
- 여유 공간 관리
- 저장소 할당
- 디스크 스케줄링
I/O 서브시스템 (I/O Subsystem)
- 운영체제의 목적 중 하나는
- 사용자로부터 하드웨어 장치의 특이성(peculiarities)을 숨기는 것.
- I/O 서브시스템은 다음으로 구성됨
- 일반 장치 드라이버 인터페이스
- 특정 하드웨어 장치를 위한 드라이버 (Drivers)
- I/O의 메모리 관리 포함:
- 버퍼링 (Buffering)
- 캐싱 (Caching)
- 스풀링 (Spooling)
특수 목적 시스템 (Special Purpose System)
- 실시간 시스템 (Real Time System)
- 예: 미사일 제어 시스템, 의료 장비 시스템.
- 엄격한 응답 시간 요구 사항
- "데드라인 (Deadline)"
- 실시간 시스템은 하드 또는 소프트일 수 있음.
- 미사일 제어 vs. MP3 플레이어.
- 멀티미디어 시스템 (Multimedia Systems)
- 예: MP3 플레이어, DVD 플레이어, 화상 회의
- 소프트 실시간 요구 사항.
- 모바일 시스템 (Mobile Systems)
- 예: 휴대폰
- 낮은 하드웨어 성능
- 느린 프로세서, 제한된 메모리, 작은 디스플레이 화면, 제한된 전력.
가상 머신 (Virtual Machines)
- 가상 머신 (Virtual Machines)
- 하나의 컴퓨터가 여러 개의 다른 수행환경(OS)를 가지는 것
- 하나의 컴퓨터를 여러 다른 실행 환경으로 추상화.
- 각각의 별도 실행 환경이 자신의 컴퓨터를 사용하는 것처럼 환상(illusion)을 만듦.
- 하드웨어와 커널을 모두 하드웨어로 취급.
- 가상 머신의 특징
- 시스템 resource의 완전한 보호를 제공.
- resource의 직접적인 공유가 없음.
- 운영체제 개발이 편리함.
- 다른 운영체제에서 애플리케이션 테스트가 편리함.
- 예: Linux, FreeBSD, Windows 10에서 테스트해야 하는 애플리케이션인 경우?
- Vmware 아키텍처 (Vmware Architecture)
- 호스트 운영체제: Linux
- 게스트 운영체제: FreeBSD, Windows NT, Windows 10
- 각 애플리케이션은 가상 CPU, 가상 메모리, 가상 장치를 가짐.
- 가상화 계층이 이들을 관리.
오픈 소스 운영체제 (Open-Source Operating Systems)
- 운영체제는 소스 코드 형식으로 제공되며, binary closed-source가 아님.
- copy protection 및 Digital Rights Management (DRM) 운동에 대한 반작용.
- Free Software Foundation (FSF)에서 시작됨. FSF는 "카피레프트 (Copyleft)" GNU Public License (GPL)를 가짐.
- GNU/Linux와 BSD UNIX (Mac OS X의 코어 포함) 등 다양한 운영체제가 있음.
'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] 06. Synchronization Tools (0) | 2024.06.19 |
---|---|
[운영체제] 05. CPU Scheduling (0) | 2024.06.19 |
[운영체제] 04. Threads & Concurrency (0) | 2024.06.18 |
[운영체제] 03. Process (0) | 2024.06.18 |
[운영체제] 02. Operating System Structures (0) | 2024.06.18 |