I/O
I/O -> CPU가 레지스터에 읽고 쓰는 동작
I/O 처리기법 1 -> 폴링 -> 지속적으로 특정 이벤트의 도착 여부를 확인 -> 인터럽트와 반대되는 개념
I/O 처리기법 2 -> DMA -> CPU에 I/O 인터럽트가 들어오면 CPU는 DMA에게 I/O처리를 요청함. DMA가 I/O처리를 하는 동안 CPU는 다른 일을 수행함. DMA가 동작을 마치면 CPU에 인터럽트를 발생시켜서 작업이 완료되었음을 알림.
프로그램 vs 프로세스
======= ============== high address
| header | | stack |
| text(code) | => | heap |
| data | | bss |
======= | data |
| text(code) |
============== low address
커널 종류
Monolithic kernel
장점: 어플리케이션과 모든 커널 서비스가 같은 주소 공간에 위치하기 때문에, 시스템 콜 및 커널 서비스 간의 데이터 전달 시에 오버헤드가 적음
단점: 모든 서비스 모듈이 하나의 바이너리로 이루어져 있기 때문에 일부분의 수정이 전체에 영향을 미침 각 모듈이 유기적으로 연결되어 있기 때문에 커널 크기가 커질수록 유지 보수가 어려움 한 모듈의 버그가 시스템 전체에 영향을 끼침
Microkernel
장점
-> 각 커널 서비스 서버가 따로 구현되어 있기 때문에 서로 간의 의존성이 낮음, monolithic 커널 보다 독립적인 개발이 가능 커널의 개발 및 유지 보수가 상대적으로 용이
-> 커널 서비스 서버의 재시작/종료 가능, 불필요한 서비스의 서버는 종료 -> 많은 메모리 및 CPU utilization확보 가능
-> 이론적으로 micro 커널이 monolithic보다 안정적 문제 있는 서비스는 서버를 재시작하여 해결
-> 서버 코드가 protected memory에서 실행되므로 검증된 S/W 분야에 적합함, 임베디드 로봇 산업, 의료 컴퓨터 분야
단점
Monolithic 커널보다 낮은 성능을 보임 -> 독립된 서버들 간의 통신 및 Context switching
블록 I/O 처리 비교
문맥전환
CPU가 일을 하다가 바뀌는 순간
1. Time quantum expires -> clock 시간이 지났을 때
2. I/O 호출 -> DMA에게 맡기고 다른 작업시작
다른 프로세스로 문맥전환하면 데이터는 어디로? -> PCB(Process Control Block)라는 곳에 저장
시스템콜
-> User mode에서 kernel mode로 진입하기 위한 통로 커널에서 제공하는 protected 서비스를 이용하기 위하여 필요
Open(2) : a file or device
Write(2) : to file or device
-> 문맥교환 없음
IPC(Interprocess Communication)
IPC -> 프로세스 간에 데이터 주고받기 위한 메커니즘
1. 메모리 공유 -> locking, 세마포어 -> 사용가자 동기화 구현
2. 메시지 교환 -> Pipe, Message Queue, 소켓 프로그래밍 -> 커널이 알아서 동기화
MMU(Memory Management Unit)
mmu -> 가상 주소와 물리 주소 간의 변환을 수행하는 하드웨어 장치
p에 페이지 번호, d에 가상 주소를 mmu로 전달하면 해당 페이지로가면 f 주소가 적혀있으므로 f 주소에 d를 더한 결과값의 주소로 이동하면 데이터에 접근할 수 있다.
'잡동사니' 카테고리의 다른 글
하드디스크, RAM, ROM, SSD 개념 (0) | 2021.10.05 |
---|---|
git 버전별로 컴파일 후 패치된 취약점 확인과정 (0) | 2021.10.02 |
심플한 원격 데스크톱 (0) | 2021.09.29 |
외부에서 접속 가능한 나만의 서버 만들기 (0) | 2021.09.29 |
[파일 시스템 개념] (0) | 2021.09.18 |
댓글