일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- JanusGateway
- 티스토리챌린지
- vfr video
- mp4fpsmod
- VARCHAR (1)
- table not found
- 겨울 부산
- 깡돼후
- PersistenceContext
- preemption #
- JanusWebRTCServer
- 오블완
- JanusWebRTCGateway
- pytest
- JanusWebRTC
- 자원부족
- PytestPluginManager
- taint
- k8s #kubernetes #쿠버네티스
- Value too long for column
- Spring Batch
- 코루틴 컨텍스트
- kotlin
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- terminal
- 코루틴 빌더
- 달인막창
- tolerated
- python
- 개성국밥
너와 나의 스토리
week2 OS -[ Process / Limited execution ] 본문
Keyword
- Process
- Limited execution
● I/O operation
- I/O 장치와 CPU는 동시에 작동될 수 있다. -> DMA 덕분에
- device controller
: CPU와 device 사이에서 연결해주는 것
ㄴ 각각의 device controller는 local buffer을 가진다
- I/O는 장치에서 controller의 local buffer이다.
● I/O structure
- I/O transaction은 bus를 통해 이뤄진다
ㄴ System bus : CPU와 I/O bridge 연결
(*I/O bridge는 I/O bus라고 생각하면 될 듯 ; 입출력 통로)
ㄴ Memory bus: I/O bridge와 memory 연결
- DMA (Direct Memory Access)
: CPU 개입 없이 장치가 단독으로 읽고 쓰는 bus transaction을 하는 과정
ㄴ DMA를 사용하면 CPU가 전송을 시작하고, 전송이 진행된는 동안 다른 작업을 진행 할 수 있다
ㄴ 만약 DMA가 없다면?
-> CPU가 계속 I/O를 요청해야 함으로 느려지고 CPU가 다른 일을 못한다.
● Interrupt
: 프로그램을 실행하고 있을 때, 장치 또는 예외상황이 발생하여 처리가 필요할 경우에 CPU에 알려 처리하도록 함
- trap : 에러나 사용자 요청에 의해 소프트웨어가 생성한 interrupt
- OS는 interrupt에 의해 작동된다.
ex) timer interrupt (시간이 되면 자동으로 interrupt)
- interrupt handler :
CPU에 interrupt가 접수되면, 해당 interrupt handler의 코드의 위치를 찾고 실행에 옮긴다.
이 전에 실행되던 상태가 없어지면 나중에 복귀 되었을 때 문제가 발생하므로
register와 program counter을 보관함으로써 CPU의 상태를 보존한다.
interrupt handling이 완료되면 이전의 상태로 복귀된다.
- program counter :
CPU 내부에 있는 레지스터 중 하나.
다음에 실행될 명령어의 주소를 가지고 있어 실행할 기계어 코드의 위치를 지정한다.
● Interrupt vs Trap
- interrupt는 프로세서 외부 event로 인해 발생
- Asynchronous
ㄴ Trap : 명령 실행 결과로 발생한 event에 의해 발생
ㄴ software interrupt
- Synchronous
ㄴ System call
● Storage structure
- Main memory (RAM) : CPU가 직접 접근 저장한 대형 저장 매체만
- Secondary storage : 커다란 비휘발성의 저장 용량을 제공하는 메인 메모리의 확장
ㄴ ex) magnetic disk, SSD
register ↓ cache ↓ main memory ----------------------- ↓ electronic disk ↓ magnetic disk ↓ optical disk ↓ magnetic tapes |
내려갈 수록 느리고 저렴하다
점선 위는 휘발성
● Multiprocessor memory model
- UMA (uniform memory access)
ㄴ 어떤 CPU에서든 RAM에 접근하는데 동일한 시간이 든다
- NUMA (Non-uniform memory access)
ㄴ 메모리 접근 시간은 프로세서와 관련된 메모리의 위치에 따라 다르다
● Multiprogramming
- 목적 : CPU와 I/O를 최대한 쉬지 않고 돌아가게 함
- 방법:
ㄴ multiprogramming은 job들을 조직하여 CPU가 항상 하나 이상의 일을 하도록 함
ㄴ jobs 중에서 겹치는 부분은 메모리에 저장해둠
ㄴ Job scheduling을 통해서 하나의 job이 선택되고 작동함
ㄴ 한 job이 실행되다 멈추면(기다리면) os가 다른 job으로 바꿈
● Job scheduling
: job 순서 결정
virtual machine |
(size) >> |
OS |
job 1 |
physical memory |
|
job 2 |
||
job 3 |
||
job 4 |
● CPU scheduling
: CPU가 메모리상의 어떤 job에 얼마나 자원을 할당할지 결정
OS |
job 1 |
job 2 |
job 3 |
job 4 |
● A dual-mode operation of OS
: kernel이 중요한 자원을 관리하는데, 사용자가 그 중요한 자원에 접근하지 못하도록 모드를 2가지로 나눴다.
- user mode (1)
ㄴ 접근 할 수 있는 영역 제한적
ㄴuser mode에서는 리소스 할당 및 사용 관련된 일을 못 하므로 system call을 이용해 kernel mode로 전환한다 (H/W 지원 필요)
ㄴ 명령어 : trap
- kernel mode (0)
ㄴ 모든 자원에 접근 및 명령 가능
● user mode <-> kernel mode 전환
- user mode에서 작업을 하다가 입출력 함수(cin,cout) 등을 사용하는 이유로 자원에 접근해야 할 때
System call을 이용해 kernel에 요청
-> trap (mode bit=0)
- 요청 받은 kernel이 작업을 수행하고 return 해 줌.
-> return (mode bit=1)
A Process : 작동 중인 프로그램
● CPU가 여러개 인듯한 환상을 주는 방법
- > CPU virtualizing
● process 구성
- Memory (주소 공간)
ㄴ 명령들 = binary code
ㄴ 데어터 = 변수 초기화 값 등
- Registers
ㄴ PC (program counter)
ㄴ Stack pointer
● Process API
- Create
- Destroy
- Wait
- Miscellaneous Control
- Status
● Process Creation
- 프로그램 코드를 메모리에 load (프로세스 주소 공간이 있는 메모리)
= process
ㄴ OS는 필요할 때만 프로세스 load함
.
- 프로그램의 run-time stack이 할당된다.
- OS가 프로세스 만드는 과정
1. 프로그램 코드를 메모리에 올림
2. 스택 할당
3. 힙 영역 할당
'Operating System' 카테고리의 다른 글
OS-week3 [Multi-level Feedback] (0) | 2019.03.26 |
---|---|
OS-week3 [Scheduling] (0) | 2019.03.26 |
CLI 및 Linux를 공부해보자 (0) | 2019.03.26 |
OS-week4 [CH13_Address Spaces] (0) | 2019.03.23 |
week1 OS - [ Virtualization / Concurrency / Persistence] (0) | 2019.03.08 |