1 분 소요


1. I/O
- 동기/비동기: 전 포스팅에 있음.
- 비동기 인터럽트기반 I/O
- 디바이스별로 디바이스 컨트롤러 있어서 비동기 I/O 가능하게 함
- Device Status Table: 각 디바이스의 상태를 나타내는 테이블 있다!
- 링크드리스트로 큐 구현
- Memory Mapped I/O
- DMA사용(Direct Memory Access): 입출력 장치는 CPU를 통하지 않고서 메모리와 서로 통신할 수 있다.
- 입출력 장치가 사용할 버퍼를 OS가 지정해줌
- 입출력장치는 CPU와 비동기적으로 작동하고 CPU에게 인터럽트를 띄움
* 버스 충돌이 나진 않을까?? 난다............... Bus Arbitration. 새끼 CPU들이(디바이스 컨트롤러) 서로 버스가지고 경쟁. 하지만 Main CPU가 우선순위 결정한다...

2. Storage
- 메인메모리/Secondary메모리/Magnetic디스크 로 구성
- 상위 레벨 메모리와(레지스터 등) 하위 레벨 메모리 사이 간의 완충장치: 캐시!!
- Locality of Reference가 있기에 캐시를 쓸 수 있는것!!!
- 같은 메모리 페이지를 여러번 엑세스 할 수록 캐시의 효율이 높아짐
* Locality of Reference: CPU가 메모리 페이지를 엑세스 할 때 어떤 시간대에는 어떤 메모리 페이지들에 상대적으로 집중하여 엑세스 한다는 자연스런 현상
- 메모리의 크기와 속도 간 트레이드오프.
- READ 과정: magnetic disk -> main memory -> cache -> hardware register
- WRITE 과정: 반대로.

3. Protection
- 메모리와 I/O, 유저 프로세스는 서로 보호되어야 한다.
- Dual Mode Operation: CPU Execution에 권한을 부여함
1) Kernel mode(=Monitor mode): 
- privileged instructions 가능
- I/O 디바이스에 엑세스하고 인터럽트를 컨트롤함
- 메모리 상태 관리
- 모드 체인지
2) User mode: 일반 유저 어플리케이션 수행
- 프로텍션의 종류
1) I/O Protection
- I/O는 privileged instrucetion에 의해 수행되게함
- 유저 프로그램은 I/O를 쓰기 위해 OS에게 시스템콜을 호출해야함
- 유저가 시스템 콜을 만들면! 트랩!!(software generated interrupt)
- kernel에서 system call이 일어날 때를 trap이라고 한다. function call과 비슷함
2) Memory Protection
- 2개의 레지스터 사용(Base register, Limit register)
- Base: 가장 작은 물리적 메모리 주소를 저장하고 있음
- Limit: 범위의 사이즈를 저장하고 있음  => 이 범위 밖의 메모리는 보호된다!!
- 프로그램의 컨트롤이 자기 주소공간 내에 있어야 한다. 
- how? 처음에 시작주소 로딩 몇번지?? 상대주소로 relocation(relative address <-> physical address)
- CPU는 항상 0번지에서 시작한다고 믿음, 그럼 실제 물리적 주소는 어케 찾아가지?? MMU가 해줌
3) CPU Protection
- 타이머를 사용 하여 일정 기간 주기로 인터럽트를 걸음-> 컨트롤을 OS가 잘 가지고 있는지 확인
- Context Switching 할때도 타이머 사용
- 매 클락마다 타이머 시간 줄어들음
- Load-Timer는 privileged instruction임
4. 네트워크 구조
- WAN/LAN




댓글남기기