운영체제
컴퓨터 시스템의 4가지 구성요소
- 사용자(User)
- 응용프로그램(Applications) : (word processor, web browser, games, ...)
- 운영체제(Operating system)
- 하드웨어(Hardware) : (CPU, memory, IO devices)
운영체제(OS, Operating System)
- 응용 프로그램과 컴퓨터 하드웨어 사이의 중개자 역할
- 컴퓨터 하드웨어 리소스 관리
- 애플리케이션을 위한 일부 서비스 제공
사용자 뷰(User view)의 운영체제
- 응용 프로그램 실행
- 컴퓨터 시스템을 사용에 편리
시스템 뷰(System view)의 운영체제
- 리소스 할당자
H/W 리소스 : CPU, 메모리, I/O 장치
S/W 리소스 : 파일, 소켓, 세마포어 등 - 제어 프로그램
I/O 장치의 애플리케이션 및 운영 실행 제어
운영체제 정의
- 운영체제의 정의는 전공서적별로 조금씩 다르다. 모호(Ambiguous)하다.
이 강좌에서는 "컴퓨터에서 항상 실행되는 프로그램"으로 운영체제를 정의한다.
커널(kernel)과 의미가 통하고 이외의 다른 모든 것은 시스템 프로그램 또는 응용 프로그램이다.
컴퓨터시스템 운영
컴퓨터시스템 조직
- 각 I/O 장치 컨트롤러는 특정 장치 유형을 담당하고 로컬 버퍼(local buffer)가 존재한다.
디스크 I/O 작업
- 디스크 컨트롤러 : 장치 컨트롤러의 로컬 버퍼와 장치(device) 간 데이터 이동
CPU : 장치 컨트롤러의 로컬 버퍼와 메인 메모리(main memory) 간 데이터 이동 - CPU와 I/O 장치는 독립적으로 자체 작업 수행 가능하다.
→ 작동이 끝나면 장치 컨트롤러는 CPU에게 인터럽트(inrerrupt) 신호를 주어 알린다.
인터럽트 처리(Interrupt handling)
- 인터럽트가 발생시 CPU는 수행중인 작업을 중지하고 인터럽트 서비스 루틴(ISR) 호출한다.
- inst.M 실행시 디스크 인터럽트가 발생하면
- 디스크 인터럽트를 위해 인터럽트 벡터 테이블로 이동하여 인터럽트 주소 확인후
- 해당하는 디스크 인터럽트 서비스 루틴을 동작한다.
인터럽트 타임라인
저장장치 구조
주기억장치(Main memory)
- CPU가 직접 액세스 할 수있는 저장 매체
- DRAM(Dynamic Random Access Memory) : 휘발성 물질
보조기억장치(Secondary memory)
- 대규모 비휘발성 저장 용량 제공
- HDD(Hard Disk Drives)
- NAND 플래시 메모리
- SSD(Solid State Drives)
저장장치 계층
- 레지스터(Register)
- CPU 캐시(cache) : SRAM
- 주기억장치(Main memory) : DRAM
- 보조기억장치(secondary memory) : HDD, NAND, SSD
- 광디스크(Optical Disk) : CD, DVD
- 자기테이프(Magnetic Tape)
다양한 저장 매체의 특성
레벨 | 1 | 2 | 3 | 4 | 5 |
이름 | 레지스터 | CPU 캐시 | 주기억장치 | 보조기억장치 | 광디스크 |
크기 | ~ 1 KB | ~ 16 MB | ~ 64 GB | < 1 TB | ~ 10 TB |
구현기술 | 여러 포트가 있는 사용자 지정 메모리, CMOS | 온칩 또는 오프칩 CMOS SRAM | CMOS DRAM | 플래시 메모리 | 자기 디스크 |
접근 시간(ns) | 0.25-0.5 | 0.5-25 | 80-250 | 25,000-5,000,000 | 5,000,000 |
대역폭(MB/sec) | 20,000-100,000 | 5,000-10,000 | 1,000-5,000 | 500 | 20-150 |
관리 | 컴파일러 | 하드웨어 | OS | OS | OS |
백업 | 캐시 | 주기억장치 | 디스크 | 디스크 | CD 또는 테이프 |
캐싱(Caching)
- 프로그램 실행을 위해 명령과 데이터는 HDD로부터 CPU 레지스터로 로드되어야한다.
- 캐싱 : 더 빠른 저장 장치에 데이터를 저장하고 동일한 데이터의 이후 요청의 접근 속도를 향상시킨다.
캐싱의 특징
- 캐싱은 시스템의 여러 레벨과 많은 환경에서 수행된다.
CPU 캐시, 운영 체제의 버퍼 캐시, 디스크 캐시 등
웹 캐시, 스트리밍 캐시 등 - 요청된 데이터가 있는지 확인하기 위해 캐시가 먼저 확인된다.
캐시에 데이터가 있는 경우 : 데이터는 캐시에서 직접 사용
캐시에 데이터가 없는 경우 : 데이터는 캐시로 먼저 복사되고 캐시에서 사용 - 캐시의 크기에 한계가 있다.
따라서 교체 정책 필요
예) LRU, LFU, clock 등 - 캐시된 데이터는 신중하게 처리된다.
데이터의 여러 사본이 존재 가능 → 데이터 불일치 - 캐시 일관성
다중 프로세서 환경에서 모든 CPU는 캐시에 가장 최근의 값을 가진다. - 분산 환경의 상황이 더 복잡
운영체제 구조
멀티프로그래밍
- 여러 프로그램이 동시에 주메모리에 유지되고 CPU는 다중화된다. → CPU 사용률이 증가
- 단일 프로그램으로 CPU, I/O 장치를 항상 사용 X
- CPU에 항상 실행할 프로그램이 있도록 프로그램을 구성
- 스케줄링으로 하나의 프로그램을 선택하고 실행
- 기다려야 할 때(예) I/O 요청) OS는 다른 프로그램으로 전환
시분할
- 시분할은 멀티프로그래밍의 논리적 확장이다.
예) UNIX - 사용자는 키보드, 마우스를 사용하여 프로그램에 명령 후 즉시 결과를 기다린다.
→ 응답 시간이 짧아야한다. (일반적으로 1초 미만) - CPU는 사용자가 각 프로그램과 상호 작용할 수 있도록 프로그램을 매주 자주 전환한다.
→ 응답 시간을 최소화한다.
운영체제 작업
이벤트 구동형(event driven)
- 프로그램, I/O 요청, 사용자가 없을 때, OS는 조용히 어떤 이벤트가 발생까지 대기한다.
이벤트
- 하드웨어 : 디스크 인터럽트, 키보드 인터럽트, 마우스 인터럽트 등
- 소프트웨어 : 0으로 나누기, 잘못된 메모리 액세스, 시스템 호출 등
- 기타 오류 : 무한 루프 등
듀얼 모드
- 사용자 모드 / 커널 모드
- 권한이 있는 명령은 커널 모드에서 실행 가능
- 하드웨어에서 제공하는 모드 비트(Mode bit, PSW(프로그램 상태 워드))
사용자 모드 (1) / 커널 모드 (0)
프로세스 관리
프로세스는 실행 중인 프로그램
- 프로그램 : 수동적(passive) 엔티티
- 프로세스 : 능동적(active) 엔티티, 시스템 내의 작업 단위
프로세스에는 작업을 수행하기 위한 리소스가 필요
- CPU, 메모리, I/O 장치, 파일 등…
프로세스 관리 활동
- CPU에서 프로세스 스케줄링
- 프로세스 생성 및 삭제
- 프로세스 동기화 메커니즘
- 프로세스간 통신 메커니즘
- 교착 상태(Deadlock) 처리
메모리 관리
메모리 관리 활동
- 현재 누군가에 의해 사용되고 있는 메모리의 부분을 추적하는 것
- 메모리로 이동하거나 메모리에서 이동할 프로세스 및 데이터 결정
- 필요에 따라 메모리 공간 할당 및 할당 해제
가상 메모리 시스템
- 다양한 형태의 데이터 스토리지(DRAM, 디스크)를 가상화하여 가상메모리라는 한 종류의 메모리만 있는 것처럼 프로그램을 설계
저장장치 관리
OS는 정보 저장장치에 대한 일관된 논리적 뷰를 제공
- 파일
논리 저장 단위
일반적으로 디렉토리로 구성 - 파일 시스템
데이터 저장, 검색, 업데이트하고 장치의 사용 가능한 공간을 관리하는 수단
파일 시스템 작업
- 파일 및 디렉터리 만들기 및 삭제
- 파일 및 디렉터리를 조작하는 기본 요소 지원
- 보조 저장장치에 파일 매핑
대용량 저장장치 관리
- 디스크는 데이터 저장에 사용
- 컴퓨터 작동의 전체 속도
디스크 하위 시스템 및 해당 알고리즘
가장 느린 속도에 맞춰짐
디스크 저장 작업
- 사용 가능한 공간 관리
- 저장소 할당
- 디스크 스케줄링
I/O 서브시스템
OS 목적
- 사용자에게 하드웨어 장치의 특수성을 숨긴다.
I/O 서브시스템 구성
- 일반 장치 드라이버 인터페이스
- 특정 하드웨어 장치용 드라이버(Drivers)
- I/O의 메모리 관리
버퍼링
캐싱
스풀링
특수 목적 시스템
실시간(Real time) 시스템
- 예) 미사일 제어 시스템, 의료 장비 시스템
- 엄격한 응답 시간 요구사항
"데드라인" - 실시간 시스템은 하드 또는 소프트
미사일 제어 vs. mp3 플레이어
멀티미디어 시스템
- 예) MP3 플레이어, DVD 플레이어, 비디오 컨퍼런스
- 소프트 실시간 요구사항
모바일 시스템
- 예) 휴대 전화
- 낮은 H/W 기능
느린 프로세서, 제한된 메모리, 작은 디스플레이 화면, 제한된 전력
가상 시스템(Virtual Machines)
가상 시스템
- 단일 시스템을 여러 실행 환경으로 추상화
- 각각의 개별 실행 환경이 자신의 컴퓨터를 사용하는 것처럼 착각
- 하드웨어 및 커널을 모두 하드웨어인 것처럼 취급
가상 시스템의 기능
- 시스템 리소스를 완벽하게 보호
- 자원의 직접적인 공유 없음
- 운영체제의 개발 편리
- 다른 운영 체제에서 응용 프로그램 테스트 편리
Linux, FreeBSD, Windows 10에서 애플리케이션 테스트
오픈 소스 운영 체제
- binary closed-source가 아닌 소스 코드 형식으로 제공되는 운영 체제
- 복제 방지 및 DRM(Digital Rights Management; 디지털 저작권 관리)에 대응
- GNU Public License(GPL) copyleft를 보유한 자유 소프트웨어 재단(Free Software Foundation; FSF)이 시작
- GNU/리눅스 및 BSD UNIX(Mac OS X 코어 포함) 등
요약
- 운영 체제
1. 응용 프로그램과 컴퓨터 하드웨어 사이의 중개자 역할
2. 컴퓨터 하드웨어 리소스를 관리
3. 응용 프로그램을 위한 일부 서비스를 제공 - 인터럽트 발생시
1. CPU는 현재 수행 중인 작업을 중지
2. ISR(Interrupt Service Routine) 호출 - 캐싱
동일한 데이터의 향후 요청에 대한 접근 속도 향상
더 빠른 스토리지 미디어에 데이터 저장 - 시분할 시스템
CPU는 사용자가 각 프로그램과 상호 작용할 수 있도록 프로그램을 매우 자주 전환 - 운영 체제 구성
프로세스 관리, 메모리 관리, 파일 시스템, I/O 하위 시스템 등
'운영체제' 카테고리의 다른 글
[OS] 동기화 도구 (0) | 2023.04.03 |
---|---|
[OS] CPU 스케줄링 (0) | 2023.03.27 |
[OS] 쓰레드와 프로세스 (0) | 2023.03.20 |
[OS] 프로세스 (0) | 2023.03.13 |
[OS] 서비스, 시스템 콜, 구조, 부팅 과정 (0) | 2023.03.09 |