티스토리 뷰
1. 컴퓨터 시스템 개요
* 프로세서: CPU, GPU, 응용 전용 처리 장치
- 연산 수행
- 컴퓨터의 모든 장치의 동작 제어
* 레지스터: 프로세서 내부에 있는 메모리로 프로세서가 사용할 데이터를 저장하고 컴퓨터에서 가장 빠른 메모리
- 용도: 전용, 범용
- 사용자가 정보 변경 가능 여부에 따른 분류: 사용자 가시, 사용자 불가시
- 저장하는 정보의 종류에 따른 분류: 데이터, 주소, 상태
* 메모리: 주기억장치, 보조기억장치
- 데이터를 저장하는 장치
- 종류: 레지스터, 캐시, 메인메모리, 보조기억장치
- 주기억장치: 프로세서가 수행할 프로그램과 데이터를 저장, 디스크 입출력 병목현상 해소
- 캐시: 프로세서 내부에 있는 메모리로 속도가 빠르고 가격이 비쌈, 주기억장치의 입출력 병목현상 해소, 일반적으로 hw적으로 관리. 캐시 히트와 캐시 미스.
- 지역성
1) 공간적 지역성: 참조한 주소와 인접한 주소를 참조하는 특성으로 순차적 프로그램 수행
2) 시간적 지역성: 한 번 참조한 주소를 곧 다시 참조하는 특성
3) 지역성은 캐시 적중률과 밀접: 알고리즘 성능 향상을 위한 중요한 요소 중 하나
- 메모리의 종류: 보조기억 장치로 프로그램과 데이터를 저장하는 주변장치. 용량이 크고 가격이 저렴.
* 시스템 버스: 하드웨어들이 데이터 및 신호를 주고 받는 물리적인 통로
* 주변장치: 키보드, 마우스, 모니터, 프린터, 네트워크 모뎀
- 프로세서와 메모리를 제외 한 하드웨어들
- 입력장치, 출력장치, 저장장치
- 장치 드라이버 관리: 주변 장치 사용을 위한 인터페이스 제공
- 인터럽트 처리
- 파일 및 디스크 관리
운영체제 개요
* 역할
- User Interface: cui, gui
- Resource management: hw, sw
- Process and Thread management
- System management: 시스템 보호
* 구분
- 동시 사용자 수
single-user system
multi-user system: 동시에 여러 사용자들이 시스템을 사용하므로 소유 권한 관리가 필요하고 기능 및 구조가 복잡
- 동시 실행 프로세스 수
single-task: 시스템 내에 하나의 작업만 존재
multi-task: 동시에 여러 작업의 수행 가능
- 작업 수행 방식
1) 순차처리: 사용자가 직접 기계어로 프로그램 작성하는 운영체제 개념이 존재하지 않는 때
2) 일괄처리 시스템: 모든 시스템을 중앙에서 관리 및 운영, 사용자의 요청 작업을 일정 시간 모아 두었다가 한번에 처리, 많은 사용자가 시스템 자원을 공유하고 처리 효율이 향상되는 장점, 긴 응답시간과 생산성 저하가 단점
3) 시분할 시스템: 여러 사용자가 자원을 동시에 사용하는 것으로 os가 파일 시스템 및 가상 메모리 관리. 사용자 지향적으로 대화형 시스템과 단말기 사용. 응답시간이 단축되고 생산성 향상이 장점. 통신 비용 증가와 개인 사용자 체감 속도 저하가 단점.
4) 개인 컴퓨터: 개인이 시스템 전체를 독점하고 os가 상대적으로 단순하고 다양한 사용자 지원 기능 지원. 빠른 응답시간이 장점이지만 성능이 낮은 것이 단점.
5) 병렬 처리 시스템: 단일 시스템 내에서 둘 이상의 프로세서 사용으로 동시에 둘 이상의 프로세스를 지원. 메모리 등의 자원 공유. 성능과 신뢰성을 향상시킴.
6) 분산 처리 시스템: 네트워크를 기반으로 구축된 병렬처리 시스템. 물리적인 분산과 통신망을 이용한 상호 연결. 사용자는 분산운영체제를 통해 하나의 프로그램 자원처럼 사용이 가능하다. 구축 및 관리가 어려운 단점.
7) 실시간 시스템: 작업 처리에 제한 시간을 갖는 시스템. hard real-time(발전소 무기 제어), soft real-time(동영상 재생)
* 구조
- 커널: OS의 핵심 부분으로 메모리에 상주. 가장 빈번하게 사용되는 기능들을 담당함.
- 유틸리티: 비상주 프로그램, ui 서비스 프로그램
- 단일구조 운영체제: 하나의 커널에 기능 집합. 커널 내 모듈 간 직접 통신으로 효율적 자원 관리 및 사용. 커널의 거대화가 단점.
- 계층구조: 모듈화로 계층 간 검증 및 수정 용이. 설계 및 구현의 단순화가 장점. 단일구조 대비 성능 저하가 단점.
- 마이크로 커널 구조: 커널의 크기 최소화로 필수 기능만 포함하고 기타 기능을 사용자 영역에서 수행
* 기능
- 프로세스 관리: 커널에 등록된 실행 단위인 실행 중인 프로그램으로 사용자 요청/프로그램의 수행 주체.
- 프로세서 관리: CPU, 프로세스 스케줄링, 프로세서 할당 관리
- 메모리 관리: 주기억장치, multi-user/multi-tasking, 메모리 할당
- 파일 관리: 논리적 데이터 저장 단위
- 입출력 관리: os가 반드시 관여
- 보조기억장치 및 기타 주변장치: disk, network, security, system call interface
2. 프로세스 관리
- job, program: 실행 할 프로그램과 데이터, 컴퓨터 시스템에 실행 요청 전의 상태.
- process: 실행을 위해 시스템(커널)에 등록된 job. 시스템 성능 향상을 위해 커널에 의해 관리 됨
- 프로세스의 정의
1) 실행중인 프로그램: 커널에 등록되고 커널의 관리하에 있는 작업. 각종 자원들을 요청하고 할당 받을 수 있는 개체. 프로세스 관리 블록을 할당 받은 개체. 능동적인 개체.
2) 프로세스 관리 블록: 커널 공간 내에 존재. 프로세스 생성 시 생성.
pid: 프로세스 고유 식별 번호
스케줄링 정보: 프로세스 우선순위 등과 같은 스케줄링 관련 정보들
프로세스 상태: 자원 할당, 요청 정보
메모리 관리 정보
입출력 상태 정보
문맥 저장 영역
계정 정보
- 자원: 커널의 관리 하에 프로세스에게 할당/반납 되는 수동적 개체.
- 프로세스 상태
1) Created State: job을 커널에 등록하고 PCB 할당 및 프로세스 생성.
2) Ready State: 프로세서 외에 다른 모든 자원을 할당 받은 상태, 즉시 실행 가능 상태.
3) Running State: 프로세서와 필요한 자원을 모두 할당 받은 상태. Preemption. Block/Sleep.
4) Blocked/Asleep State: 프로세서 외에 다른 자원을 기다리는 상태. 자원 할당은 System call에 의해 이루어짐.
5) Suspended State: 메모리를 할당 받지 못한 상태로 memory image를 swap device에 보관.
- Swap-out(suspended), Swap-in(resume)
6) Terminated/Zombie State: 프로세스 수행이 끝난 상태. 모든 자원 반납 후, 커널 내에 일부 PCB 정보만 남아 있는 상태. (이후 프로세스 관리를 위한 정보 수집)
- 인터럽트: 예상치 못한 외부에서 발생한 이벤트
I/O interrupt
Clock interrupt
Console interrupt
Program check interrupt
Machine check interrupt
Inter-process interrupt
System call interrupt
- Context Switching
Context: 프로세스와 관련된 정보들의 집합
Context saving: 현재 프로세스의 Register context를 저장하는 작업
Context restoring: Register context를 프로세스로 복구하는 작업
Context switching: 실행 중인 프로세스의 context를 저장하고 앞으로 실행 할 프로세스의 context를 복구하는 일. 비용의 크기 때문에 줄이는 것이 좋다.
Context Switch Overhead: Context switching에 소요되는 비용으로 불필요한 Context switching을 줄이는 것이 중요함.
3. 스레드
프로세스는 자원을 할당받고 제어하는 역할을 했다.
스레드는 하나의 프로세스 안에 여러 개가 존재할 수 있다. 할당받은 자원(힙/데이터/코드)은 각 스레드가 서로 공유할 수 있고 각 스레드는 제어정보/지역 데이터/스택을 각각 갖는다.
같은 프로세스의 스레드들은 동일한 주소 공간을 공유한다.
Light Weight Process, 프로세서 활용의 기본단위.
* 장점: 사용자 응답성(일부 스레드가 지연되더라도 다른 스레드는 작업을 계속 처리), 자원 공유(자원을 공유해서 효율성 증가), 경제성, 멀티 프로세서 활용(병렬처리를 통한 성능 향상)
* 구현
- 사용자 수준 스레드: 사용자 영역의 스레드 라이브러리로 구현 됨. 스레드의 생성 및 스케줄링. 커널은 스레드의 존재를 모르므로 커널의 관리를 받지 않아 유연한 관리가 가능하고 이식성이 높다. 단점은 하나의 스레드가 block 상태가 되면 모든 스레드가 대기해야 함. 커널이 프로세스 단위로 작업을 할당하기 때문!
- 커널 수준 스레드: 커널이 직접 관리. 커널 영역에서 스레드의 생성, 관리 수행. 커널이 각 스레드를 개별적으로 관리하여 프로세스 내 스레드들이 병행 수행 가능.
- 혼합형 스레드: n개 사용자 수준 스레드 - m개의 커널 스레드로 사용자는 원하는 수만 큼 스레드 사용. 커널 스레드는 자신에게 할당된 하나의 사용자 스레드가 block 상태가 되어도 다른 스레드 수행 가능.
4. 프로세스 스케줄링
* 다중프로그래밍: 여러 개의 프로세스가 시스템 내 존재. 자원을 할당 할 프로세스를 선택해야 함(스케줄링). 자원관리에는 시간분할 관리와 공간분할 관리가 있다.
1) 시간분할 관리: 하나의 자원을 여러 스레드들이 번갈아 가며 사용 => 프로세서
2) 공간분할 관리: 하나의 자원을 분할하여 동시에 사용 => 메모리
* 스케줄링의 목적
- 시스템 성능 향상
- 시스템 성능 지표
응답시간: 작업 요청으로부터 응답을 받을 때까지의 시간
작업 처리량: 단위 시간동안 완료된 작업의 수
자원 활용도: 주어진 시간동안 자원이 활용된 시간
- 목적에 맞는 지표를 고려해 스케줄링 기법을 선택
* 대기시간, 응답시간, 반환시간
대기시간: 도착 ~ 실행 시작
응답시간: 첫 번째 출력
실행시간: 실행 시작 ~ 실행 종료
반환시간: 도착 ~ 실행 종료
* 스케줄링 기준
- 스케줄링 기법이 고려하는 항목들
- 프로세스 특성
- 시스템 특성
- 프로세스 긴급성
- 프로세스 우선순위
- 프로세스 총 실행 시간
* CPU burst vs I/O burst
- 프로세스 수행(cpu 사용과 I/O 대기)
- CPU burst: CPU 사용 시간
- I/O burst: I/O 대기 시간
- burst time은 스케줄링의 중요한 요소
* 스케줄링의 단계
- 발생하는 빈도 및 할당 자원에 따른 구분
- Long-term Scheduling
Job scheduling: 시스템에 제출 할(=kernel에 등록 할) job 결정.
다중프로그래밍 정도 조절: 시스템 내에 프로세스 수 조절
I/O-bounded와 compute-bounded 프로세스들을 잘 섞어서 선택해야 함
시분할 시스템에서는 모든 작업을 시스템에 등록
- Mid-term Scheduling
메모리 할당 결정
- Short-term Scheduling
Process scheduling***: Low-level scheduling으로 프로세서를 할당할 프로세스를 결정. 가장 빈번하게 발생하고 매우 빨라야 한다.
* 스케줄링 정책
- 선점 / 비선점
1) Non-preemptive scheduling: 할당 받을 자원을 스스로 반납할 때까지 사용하는 것으로 Context switch overhead가 적음. Context switch overhead가 적고 잦은 우선순위 역전과 평균 응답 시간 증가.
2) Preemptive scheduling: 타의에 의해 자원을 빼앗길 수 있음. 예로 할당 시간이 종료되거나 우선순위가 높은 프로세스가 등장하는 것으로 시분할 시스템, 실시간 시스템에 적합.
- 우선순위
1) 정적 우선순위: 구현이 쉽고, overhead가 적고, 시스템 환경 변화에 대한 대응이 어려움
2) 동적 우선순위: 프로세스 상태 변화에 따라 우선순위 변경, 구현이 복잡, 우선순위 재계산 overhead가 큼. 시스템 환경 변화에 유연한 대응이 가능함.
* 스케줄링 알고리즘
1) FCFS(First Come First Service): 선착순
- Non-preemptive scheduling
- 스케줄링 기준
- 자원을 효율적으로 사용 가능
- Batch system에 적합하고 interactive system에는 부적합.
- 단점으로는 하나의 수행시간이 긴 프로세스에 의해 다른 프로세스들이 긴 대기시간을 갖게 되는 현상 => Convoy effect
- 긴 평균 응답시간
2) RR(Round-Robin)
- preemptive scheduling
- 스케줄링 기준으로 도착 시간 기준, 먼저 도착한 프로세스를 먼저 처리
- 자원 사용 제한 시간이 있음*** system parameter, 프로세스는 할당된 시간이 지나면 자원을 반납하고 특정 프로세스의 자원 독점을 방지. Context switch overhead가 큼.
- 대화형, 시분할 시스템에 적합
- 제한 시간이 시스템 성능을 결정하는 핵심요소로 사용자는 모든 프로세스가 각각의 프로세서 위에서 실행되는 것처럼 느낌.
출처: SPIN Lab. KOREATECH
'CS' 카테고리의 다른 글
| Apache Kafka, ActiveMQ, Redis (2) | 2025.03.04 |
|---|---|
| #5. 컴퓨터구조 + 운영체제 17강 ~ 19강 (0) | 2022.12.13 |
| #4. 컴퓨터구조 + 운영체제 14강 ~ 16강 (0) | 2022.12.12 |
| #3. 컴퓨터 구조 + 운영체제 11강 ~ 13강 (0) | 2022.12.09 |
| #2. 컴퓨터구조 + 운영체제 6강 ~ 10강 (2) | 2022.12.08 |