Process
- 수행 중인 프로그램을 의미, 메모리에 있고 CPU를 할당받지 않아도 프로세스이고, 메모리에 옮겨진다면 수행할 수 있는 프로세스가 된다.
Processor
- CPU와 같은 하드웨어를 의미
OS → 유저와 하드웨어 사이에서 매개체 역할을 하는 소프트웨어 (kernel 부분)
OS의 목표
- 사용자 프로그램을 수행하고 사용자 문제들을 해결하기 쉽게 만들어 줌
- 컴퓨터 시스템을 사용하기 편리하게 만들어 줌 (중간에서 API 제공)
- 효율적인 방법으로 컴퓨터 하드웨어를 사용하게 함
- source program
- compiler가 machine language로 변경해 target program로 만들어 줌
- disk(수행 속도 : ms)에 저장
- OS가 메인 메모리(수행 속도 : µs)로 올림
- OS가 메인 메모리의 instruction을 CPU(수행 속도 : ns)로 옮겨 수행함 (fetch)
단위 | B |
1B | 8 bits |
1KB | 2^10 B |
1MB | 2^20 B |
1GB | 2^30 B |
1TB | 2^40 B |
Computer System Structure
- Hardware - 기본 컴퓨팅 자원들을 제공한다 (CPU, memory, I/O devices)
- 운영체제(Operating System) - 다양한 애플리케이션 및 사용자 간의 하드웨어 사용을 제어 및 조정함
- Application programs - 시스템 자원을 사용하여 사용자의 컴퓨팅 문제를 해결하는 방법을 정의
- Word processors, compilers, web browsers, database systems, video games
- Users - people, machines, other computers
OS의 기능
- 사용자는 편리함, 사용 편의성 및 우수한 성능을 원함 - 자원 활용에 대해 신경쓰지 않아도 괜찮다!
- 메인프레임이나 미니컴퓨터와 같은 공유 컴퓨터는 모든 사용자를 만족시켜야 함
- workstations와 같은 전용 시스템 사용자는 전용 리소스를 가지고 있지만 서버의 공유 리소스를 자주 사용
- Handheld 컴퓨터는 리소스가 부족하여 사용 편의성과 배터리 수명에 최적화되어 있음
- 장치 및 자동차에 내장된 컴퓨터와 같이 일부 컴퓨터에는 사용자 인터페이스가 거의 없거나 전혀 없음
OS의 정의
- 하드웨어와 사용자 사이에서 한정된 자원들을 최대한으로 공유하면서 빠른 속력을 낼 수 있도록 만들어주는 소프트웨어
- 자원 할당자
- 모든 리소스를 관리
- 효율성과 공평성이 적절하게 조절되도록 자원을 할당
- 리소스를 효율적이고 공정하게 사용하기 위해 충돌하는 요청들 사이에서 결정하는 역할을 함
- ex) CPU 사용 시간 조절, 메모리 공간 조절
- 제어 프로그램
- 프로그램 실행을 제어하여 오류 및 컴퓨터의 부적절한 사용을 방지함
- ex) 메인 메모리에서 영역 침범을 방지 (유저 프로세스가 커널 공간을 침범하지 않도록 최대 길이 체크 등
- kernel - OS의 메인 메모리에서 항상 실행되는 핵심 프로그램
bootstrap program
- 부팅 또는 재부팅 시 로드됨
- ROM 또는 EPROM에 저장되며, 일반적으로 펌웨어(비휘발성)를 사용
컴퓨터 시스템 구성
- 공유 메모리에 대한 액세스를 제공하는 버스를 통해 하나 이상의 CPU, device controller 연결
- 메모리 사이클을 두고 경쟁하는 CPU들과 device들의 동시 실행
- device driver - device controller를 작동시키는 소프트웨어로 나머지 운영체제에 장치에 대한 일관된 인터페이스 제공(OS의 한 부분)
컴퓨터 시스템 작동
- I/O devices와 CPU를 동시에 실행 가능
- 각 device controller는 특정 장치 유형을 담당하고, local buffer가 있음
- CPU가 데이터를 메인 메모리에서 local buffer로, local buffer에서 메인 메모리로 이동
- devices에서 controller의 local buffer로 I/O 이동
- device controller가 CPU에 인터럽트를 발생시켜 작업이 완료되었음을 알림
multiprogramming
- CPU가 instruction을 수행하는 시간과 데이터를 가져오는 시간을 분리해 동시에 수행할 수 있도록 한다.
- I/O를 기다리는 동안 다른 프로세스에 CPU를 할당해 필요한 데이터가 disk로부터 메인 메모리로 들어오는 것이 동시에 수행됨
- 메인 메모리에 여러 프로세스가 동시에 존재해야 함
- 이는 I/O와 CPU를 동시에 수행하여 효율을 높인다!
Interrupt
- 어떤 상태가 발생했다는 시그널
- 인터럽트는 모든 서비스 루틴의 주소를 포함하는 interrupt vector를 통해 제어권을 interrupt service routine으로 전송
- interrupt vector - interrupt service routine에 대한 address를 가지고 있음
- interrput service routine(Handler) - 인터럽트 처리를 위한 루틴
- 인터럽트 아키텍처는 인터럽트된 명령의 주소를 저장
- 서브루틴 과정과 비슷
- trap 또는 exception은 오류 또는 사용자 요청으로 인해 소프트웨어에서 생성된 인터럽트
- 운영체제가 인터럽트 기반이다!
Interrupt 과정
- Interrupt 발생
- 현재 처리하는 일을 중지하고 컴퓨터의 상태(PC, 레지스터 내용 등) 메모리에 저장
- interrupt vector로 가서 interrupt service routine의 address 확인
- interrupt service routine 수행
- 이전 작업 상태를 불러온 후 수행 재개
인터럽트 처리
- 운영 체제는 레지스터와 프로그램 카운터(PC - 다음에 수행할 instruction의 메모리 address)를 저장하여 CPU의 상태를 유지
- 발생한 인터럽트 유형
- polling - 인터럽트가 어떤 device에서 발생했는지 하나씩 확인해 찾아냄
- vectored interrupt system - 인덱스를 받아 바로 찾아서 처리
- 각 유형의 인터럽트에 대해 어떤 조치를 취해야 하는지 결정하는 별도의 code segments
Interrupt Timeline
I/O와 인터럽트 서비스 루틴이 수행되는 타임라인
- I/O request가 발생해 I/O가 수행
- I/O가 끝났다면, CPU는 interrupt vector에서 interrupt service routine의 메모리 address를 확인하고, 그 메모리 주소로 가 interrupt service routine을 수행 (Interrupt service routine은 인터럽트 처리를 위한 루틴으로, 읽기인 경우를 예로 든다면 원하는 만큼의 데이터가 읽혔는지, 제대로 I/O가 완료가 되었는지 확인하는 일을 한다.)
- Interrupt service routine의 실행이 완료되면 CPU는 다시 프로세스에게 할당이 되어 다음 instruction을 수행한다.
- 다시 I/O가 발생되면 해당 과정을 반복하게 된다.
Storage Structure
- 메인 메모리(RAM) – CPU가 직접 액세스할 수 있는 대형 스토리지 미디어만 제공
- 랜덤 액세스
- 일반적으로 volatile (휘발성)
- 보조 스토리지 – 대용량 non-volatile(비휘발성) 스토리지 용량을 제공하는 메인 메모리의 확장
- Hard disks
- 논리적으로 track으로 분할되며, track은 sector로 세분화
- disk controller는 장치와 컴퓨터 간의 논리적 상호 작용을 결정
- disk 읽고 쓰는 시간 = seek time(track 찾는 시간) + rotation delay + transfer
- Solid-state disks(SSD) – 하드 디스크보다 빠르고 non-volatile(비휘발성), overwrite X
- seek time overhead는 작지만 eraser overhead가 있다.
Caching
- 사용 중인 정보를 느린 스토리지에서 빠른 스토리지로 일시적으로 복사
- 메모리보다 빠르고 CPU보다 느린 cache를 사이에 위치시켜 CPU의 데이터 접근 시간을 줄임
- CPU가 캐시에 데이터가 있는지 확인
- 있다면(hit) 캐시에서 직접 데이터를 사용함
- 적중(hit)은 원하는 항목이 캐시메모리에 있음을 의미
- 적중률(hit ratio) - 메모리 참조에 대한 캐시 성능 = 캐시 메모리의 적중 횟수 / 전체 메모리의 참조 횟수
- 없다면 miss → 데이터가 캐시에 복사되어 사용됨
- 실패(miss) 원하는 항목이 캐시메모리에 없음을 의미
- 있다면(hit) 캐시에서 직접 데이터를 사용함
- cache line : 32B, 64B, 128B - 한 블럭의 데이터를 가져옴
- Cache replacement
- 캐시 기존에 있는 데이터나 instruction을 새로운 내용으로 바꿔줌
- 교체하는 대상은 locality를 고려함 (spatial, temporal(LRU 기법))
DMA (Direct Memory Access Structure)
- 메모리 속도에 가까운 속도로 정보를 전송할 수 있는 고속 I/O devices에 사용
- device controller가 disk에서 메인 메모리로 한 블록의 데이터를 CPU 개입 없이 직접 전송
- 바이트당 하나의 인터럽트가 아닌 블록당 하나의 인터럽트만 생성됨
DMA 사용 이유
한 바이트를 옮기는 것보다 CPU의 개입 없이 한 블록의 데이터를 가져오기 때문에 속도가 빨라져 효율이 높아진다.
Q. CPU N개 → 성능 N배 높아질까? A. X
- Computational overhead
- 각각의 CPU가 computing을 끝내야 하고 최종 결과를 도출해내야 하기 때문
- Contention(자원에 대한 경쟁성)
- 동시에 MM을 수정하려고 할 때 데이터의 일관성이 사라진다. → 순차적으로 수정해야 함
loosely-coupled system - 완전한 머신들이 네트워크로 연결되어 있는 형태
tightly-coupled system - 공유 메모리에 여러 개의 CPU가 연결된 형태
Multiprocessors (다중 처리기 시스템)
- parallel systems, tightly-coupled systems 이다.
- 두 가지 유형
- Asymmetric Mulitprocessing
- Master, Slave
- 접근은 Master만 가능해 자원에 대한 contention이 줄어든다.
- Symmetric Multiprocessing(SMP)
- 주종관계 x, 공평성
- contention 발생 가능성이 높아져 overhead가 발생한다.
- Asymmetric Mulitprocessing
- 장점
- 성능이 좋아짐
- CPU만 여러 개 사용하므로 경제적
- 신뢰성 증가 - 결함 감내
Symmetric Multiprocessing
Dual-Core
- 여러 개의 코어를 가지는 하나의 칩은 여러 개의 단일 코어 칩보다 훨씬 적은 전력을 사용한다.
- 칩 내 통신이 칩 간 통신보다 빠르므로 속도가 빠르다.
Clustered Systems(distributed system)
- 일부는 HPC(High-Performance Computing) - 초고속 컴퓨팅 시스템을 위한 것이다.
- 완전한 컴퓨팅 시스템이 네트워크로 연결된 시스템으로 공유 스토리지가 있다.
운영체제 구조
Multiprogramming (Batch system)
- 단일 사용자가 CPU 및 I/O 디바이스를 항상 사용 중으로 유지할 수 없음!
- 여러 개의 job을 동시에 수행 (job(process) scheduling을 통해 하나의 작업을 선택하고 실행)
- job scheduling → 메인 메모리에 어떤 작업을 넣을 것인가? long term scheduling
- CPU scheduling → 어떤 프로세스에 CPU를 할당할 것인가? 빠른 속도, 빈도 ↑ short term scheduling
- 여러 개의 프로세스를 동시에 메인 메모리에 존재시킴
- 대기해야 하는 경우(예: I/O) OS가 다른 작업으로 전환됨
Timesharing (multitasking)
- interactive computing
- 하나의 결과가 끝난 후 응답을 확인하고 다음 명령을 수행할 수 있도록 한다. → CPU response가 빨라야 한다.
- Response time < 1 second
- 메인 메모리 안의 프로세스 사이에서 CPU 시간을 나눠 공유하면서 동시에 수행될 수 있도록 만든다.
- 여러 작업을 동시에 실행할 준비가 된 경우 » CPU scheduling
- swapping을 통해 필요한 부분만 메인 메모리에 남김
- 가상 메모리를 사용하면 메모리에 완전히 포함되지 않은 프로세스를 실행할 수 있다.
소프트웨어 인터럽트(trap or exception)
- 소프트웨어 오류(ex: 0으로 나눗셈)
- 운영체제 서비스 요청
- 다른 프로세스 문제로는 무한 루프, 프로세스들의 상호 수정 또는 운영 체제를 포함한다.
Dual-mode
- OS가 자신과 다른 시스템 구성 요소를 보호 가능
- User mode - mode bit : 1
- Kernel mode - mode bit : 0
- 하드웨어에서 제공하는 mode bit
- 시스템이 사용자 코드 또는 커널 코드를 실행 중인지 구별하는 기능 제공
- 권한이 있는 것으로 지정된 일부 명령은 kernel mode에서만 실행 가능합니다
- 시스템 호출 모드가 커널로 변경되고 호출에서 복귀하면 사용자로 재설정
Timer
- 무한 루프에 빠지거나 제어가 운영체제로 복귀하지 않는 경우를 방지
- 타이머가 일정 시간 후에 인터럽트하도록 설정
- counter가 줄어들다가 0이 되면 인터럽트 발생
- 예약 프로세스 전에 설정하여 할당된 시간을 초과하는 프로그램을 다시 제어하거나 종료
PC(program counter) → 다음에 수행할 instruction의 메모리 address를 저장하는 곳
참고 자료 : Operating System Concepts - 10th edition, Sliberscahatz, Galvin and Gagne
'CS > 운영체제' 카테고리의 다른 글
운영체제 ch 7. Synchronization Examples (0) | 2023.05.02 |
---|---|
운영체제 ch 6. Synchronization Tools (0) | 2023.04.18 |
운영체제 ch 5. CPU Scheduling (0) | 2023.04.12 |
운영체제 ch 3. 프로세스 (0) | 2023.04.10 |
운영체제 ch 2. OS 구조 (0) | 2023.04.09 |