티스토리 뷰
컴퓨터 시스템 구조
DMA
Contoller timer
l l
cpu -------------------------------- disk (인풋, 아웃풋 동시에)
l l
memory l----- 키보드, 마우스 ( 인풋 디바이스)
프로그램A l----- 프린터 (아웃풋 디바이스)
프로그램B l----- 모니터 (아웃풋 디바이스)
...
OS
computer I/O device
I/O device : 모두 각각 device controller, local buffer를 가지고 있는데
해당 디바이스 내의 cpu, memory 역할을 한다.
cpu : memory에 instruction을 하나씩 꺼내서 수행한다.
registers : memory보다 빠르면서 정보를 저장할 수 있는 작은 공간
mode bit : cpu에서 실행되는 것이 운영체제인지 사용자 프로그램인지 구분
interrupt line : 일을 수행중에 I/O device와 소통을 수행해줌 (입,출력, 완료알림)
timer:memory 안의 특정 프로그램이 너무 오래 잡고있으면
timer에 할당된 시간을 보고 cpu에 interrupt를 건다.
cpu는 다른 프로그램을 실행한다.
memory : memory도 memory controller를 가지고있음
Mode bit
- 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치 필요
- Mode bit을 통해 하드웨어적으로 두가지 모드의 operation 지원
1 사용자 모드 : 사용자 프로그램 수행
0 모니터 모드(커널모드, 시스템모드) : OS 코드 수행
- 보안을 해칠 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 ‘특권명령’
- interrupt나 Exception 발생시 하드웨어가 mode bit을 0으로 바꿈 (=모니터모드로 변경)
- 사용자 프로그램에게 cpu를 넘기기 전에 os가 mode bit를 1로 셋팅(=사용자모드로 변경)
Timer
- 정해진 시간이 흐른뒤 운영체제에게 제어권이 넘어가도록 interrupt (인터럽트)를 발생시킴
- 타이머는 매 클럭 틱때마다 1씩 감소
- 타이머값이 0이 되면 타이머 인터럽트 발생
- cpu를 특정 프로그램이 독점하는 것으로부터 보호
- time sharing을 구현하기 위해 널리 이용됨
- 현재 시간을 계산하기 위해서도 사용됨
Device Controller
- 해당 I/o 장치유형을 관리하는 일종의 작은 cpu
- 제어 정보를 위해 control register, status register를 가짐
- local buffer를 가짐 (일종의 data register)
- I/o는 실제 device와 local buffer 사이에서 일어남
- I/o가 끝났을 경우 interrupt로 cpu에 그 사실을 알림.
device driver(장치구동기)
- os 코드 중 각 장치별 처리 루틴 -> 소프트웨어
device controller(장치제어기)
- 각 장치를 통제하는 일종의 작은 cpu -> 하드웨어
DMA controller (Direct Memory Access) : 직접 memory에 접근할수 있는 장치
(제대로 와닿지는 않지만...) I/o device가 cpu에 interrup를 많이 거니까 (키보드 하나하나 칠때마다 인터럽트 걸수 없음)
명령 주고받는일을 대신 해주고 cpu는 memory에 있는 작업에 집중할 수 있게끔 한다.
- 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용
- cpu의 중재 없이 device controller가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송
- 바이트 단위가 아니라 block 단위로 인터럽트를 발생시킨다.
입출력 I/o의 수행
- 모든 입출력 명령은 특권 명령
- 사용자 프로그램은 어떻게 I/o를 하는가?
- 시스템콜(system call) : 사용자 프로그램이 운영체제에게 I/o 요청
- trap을 사용하여 인터럽트 벡터의 특정 위치로 이동
=> 제어권이 인터럽트 벡터가 가리키는 인터럽트 서비스 루틴으로 이동
=> 올바른 I/o 요청인지 확인 후 I/o 수행
=> I/o 완료 시 제어권을 시스템콜 다음 명령으로 옮김
인터럽트 (Interrupt)
- 인터럽트 당한 시점의 레지스터와 program counter를 save 한 후,
cpu의 제어를 인터럽트 처리 루틴에 넘긴다
- 하드웨어 인터럽트 (interrupt) : 하드웨어가 발생시킨 인터럽트
- 소프트웨어 인터럽트 (trap) :
- exception : 프로그램이 오류를 범한경우
- system call : 프로그램이 커널 함수를 호출하는 경우
- 관련 용어
인터럽트 백터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있음
인터럽트 처리 루틴 (=interrupt Service Routine, 인터럽트 핸들러)
: 해당 인터럽트를 처리하는 커널 함수
- 현대의 운영체제는 인터럽트에 의해 구동됨
시스템콜
- 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것
동기식 입출력과 비동기식 입출력
동기식 입출력 (synchronous I/o)
- I/o 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
- 구현 방법 1 : I/o가 끝날때까지 cpu를 낭비시킴, 매시점 하나의 I/o만 일어날 수 있음
- 구현 방법 2 : I/o가 완료될 때ᄁᆞ지 해당 프로그램에서 cpu를 빼앗음
I/o 처리를 기다리는 줄에 그 프로그램을 줄 세움
다른 프로그램에게 cpu를 줌
비동기식 입출력 (asynchronous I/o)
- i/o가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
두 경우 모두 I/o의 완료는 인터럽트로 알려줌
서로 다른 입출력 명령어 (i/o를 할 수 있는 두가지 방법)
- 일반적 i/o 방식
memory addresses - primary memory
device addresses l device 0
device addresses l device 1
device addresses - device 2
l
└ I/o를 수행하는 special instruction
memory mapped I/o
memory addresses - primary memory
memory addresses l device 0
memory addresses l device 1
memory addresses - device 2
저장장치 계층 구조
registers
ㅣ ㅣ
cache memory
l l
main memory ---> 여기까지 primary (executable), 휘발성 매체
l l
magnetic disk
l l
optical disk
l l
magnetic tape ---> 여기까지 secondary, 비휘발성 매체
speed
cost
volatility
위에 있는것일수록 빠르고, 가격이 비싸다
caching : copying information into faster storage system
프로그램의 실행 (메모리 load)


사용자 프로그램이 사용하는 함수
사용자 정의 함수 : 자신의 프로그램에서 정의한 함수
라이브러리 함수 : 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수, 자신의 프로그램의 실행파일에 포함되어 있다.
=> 위 두가지는 사용자 프로그램 내 Address space에 (stack, data, code) 바로 code 안에 있다.
커널 함수 : 운영체제 프로그램의 함수, 커널 함수의 호출? = 시스템 콜
=> 커널 address space code 안에 들어있다.
프로그램의 실행
a의 주소공간에서 프로그램 시작 사용자 정의 함수 사용 -> 시스템 콜 -> 커널 모드 -> 일을 수행하고 유저모드로 리턴 -> 라이브러리 함수도 사용하다가 -> 시스템 콜 -> 커널 모드 -> 계속 진행하다가 반복반복 -> 프로그램 종료
- Total
- Today
- Yesterday
- deadlock detection and recovery
- I/O burst
- exec()
- Semaphores
- deadlock prevention
- 문제가된다면삭제하겠습니다
- Copy on Write
- process context
- CPU Scheduler
- CPU burst
- deadlock ignorance
- Peterson's Algorithm
- multiprogramming
- docxtemplater
- nomorecramming
- devicecontroller
- deadlock avoidance
- 부모-자식 프로세스
- i/odevice
- dmacontroller
- test and set
- shortest job first
- real time scheduling
- Program Counter
- message system
- timesharing
- multiple-processer scheduling
- 혹시이런거쓰면문제유출인가요
- modebit
- process control block
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 29 | 30 |
