System Structure & Program Execution (2)
✨ 동기식 입출력과 비동기식 입출력
동기식 입출력 (Synchronous I/O)
- i/o 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어가며, 다음 작업을 수행할 수 있음
- 처리하는데 데이터가 꼭 필요할 때 사용
- read
- 구현 방법1
- i/o 끝날 때까지 CPU일 안 시키고 대기시킴 => 낭비
- 매 시점 하나의 I/O만 일어날 수 있음
- 구현 방법 2
- i/o 가 완료될 때까지 해당 프로그램에게서 CPU를 뺴앗음
- i/o 처리를 기다리는 줄에 그 프로그램을 줄 세움
비동기식 입출력 (Asynchronous I/O)
- i/o가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어가 다음 작업을 수행할 수 있음 => i/o요청하고 CPU 얻어와서 다음일 이어서 해버림
- 데이터 필요 없이 처리할 수 있는 건 바로 해버림
- write
- 구현 1
- i/o요청하고 바로 CPU 가져와서 나머지 일 처리함 (같은 프로그램)
==> 두 경우 모두 I/O의 완료는 인터럽트로 알려줌
✨ DMA(Direct Memory Access)
I/O의 과도한 interrupt를 방지하기 위한 Controller
-
- I/O 입력 하나하나마다 인터럽트 생기면 너무 비효율적
- 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용.
- CPU만 메모리에 접근 가능, 하지만 DMA도 가능하다
- DMA 하는 일 :
- buffer에 데이터가 쌓이면 메모리에 넣고 CPU한테 보고함
- I/O 인터럽트의 빈도를 줄임
- 바이트단위 인터럽트 ⇒ block 단위 인터럽트 (빈도 줄임)
✨ 서로 다른 입출력 명령어
-
- I/O를 수행하는 special instruction에 의해
- Memory Mapped I/O에 의해
✨ 저장장치 계층 구조
- CPU가 직접 접근 가능한 primary 저장장치들은 register, cache memory, main memory 이렇게 세 가지이다.
- 위로 갈수록 속도가 빠르지만 비용이 높아져 용량이 줄어듦
- register와 main memory 간의 속도 차이를 줄이기 위해 cache memory를 사용한다.
- 연두색 : 휘발성
- 분홍색 : 비휘발성
✨ 프로그램 실행(Memory Load)
- 프로그램이 어떻게 컴퓨터에 실행되는가
- 실행 ⇒ 가상메모리 ⇒ 메모리
- 프로그램 실행파일은 하드디스크 저장되어 있음 (File System)
- 각 프로그램마다 독자적인 주소 공간이 생기며, 그 안에는 stack, data, code로 영역이 나누어져 있다.
- 물리적인 메모리에다가 주소공간에서 필요한 부분만 올린다
- A라는 함수가 실행되고 있다 → 거기에 해당하는 코드만 올린다
- 사용 안 하면 디스크에 내려둠
- 하드디스크 (Swap area)
✨ 커널 주소 공간의 내용
- 운영체제도 하나의 프로그램이다
- code : 프로그램의 기계어 코드를 저장하는 영역
- OS code : 시스템콜, 인터럽트 처리 코드, 자원 관리 코드 등
- 사용자 프로그램 : 함수 등
- data : 변수, 자료구조 영역
- OS data :
- 프로세스 관리를 위한 자료구조(PCB) 저장
- memory, CPU, Disk 관리하기 위한 자료구조 저장
- 사용자 프로그램 : 변수, 자료구조 등
- OS data :
- stack : 함수호출하거나 리턴할 때 데이터를 임시 보관하는 영역
- 사용자 프로그램마다 커널 스택을 따로 사용함
✨ 사용자 프로그램이 사용하는 함수
- 요즘은 다 함수형태로 만들어져 있음
- 컴파일되어서 기계어가 되어도 함수 범위가 다 유지되어 있음
- 사용자 정의 함수
- 자신의 프로그램에서 정의한 함수
- 프로세스 A의 주소공간의 code에 있음
- 라이브러리 함수
- 자신의 프로그램에 정의하지 않고 갖다 쓴 함수
- 프로그램 실행파일에 포함되어 있음
- 프로세스 A의 주소공간의 code에 있음
- 커널함수
- 운영체제 프로그램의 함수
- 시스템 콜을 통해서 사용할 수 있음
- 시스템 콜 = 커널 함수의 호출
- 커널함수는 커널주소공간에 있음
Reference
http://www.kocw.net/home/search/kemView.do?kemId=1046323
운영체제
운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각
www.kocw.net
반응형
'👩💻 CS > 운영체제' 카테고리의 다른 글
[OS] KOCW 운영체제 강의 정리 (반효경) - 4. Process Management (0) | 2024.07.01 |
---|---|
[OS] KOCW 운영체제 강의 정리 (반효경) - 3. Process (2), (3) (0) | 2024.06.27 |
[OS] KOCW 운영체제 강의 정리 (반효경) - 3. Process (1) (0) | 2024.02.15 |
[OS] KOCW 운영체제 강의 정리 (반효경) - 2. System Structure & Program Execution(1) (0) | 2024.02.13 |
[OS] KOCW 운영체제 강의 정리 (반효경) - 1. Introduction to Operation Systems (0) | 2024.01.22 |