CS/운영체제(29)
-
DMA(Direct Memory Access)
DMA(Direct Memory Access) 원칙적으로 메모리는 cpu에 의해서만 접근할 수 있는 장치이다. 따라서 CPU외의 장치가 메모리에 접근하기 위해서 CPU에게 인터럽트를 발생시켜 CPU가 이를 대행하는 식으로만 가능하다. 하지만, 모든 메모리 접근 연산이 cpu에 의해서만 이루어질 경우, 입출력 장치가 메모리 접근을 원할때마다 인터럽트에 의해 CPU의 업무가 방해를 받게되어 CPU사용의 효율성이 저하되는 문제가 발생한다. 이러한 비효율성을 cpu외에 메모리 접근이 가능한 장치를 하나 더 두는 경우가 많은데, 이와 같은 장치를 DMA(Direct Memory Access)라고 부른다. DMA는 일종의 컨트롤러로, CPU가 입출력 장치들의 메모리 접근 요청에 의해 자주 인터럽트 당하는 것을 막아..
2024.01.11 -
폴링이 뭐야? 인터럽트와 비교되는 개념이라는데?
polling과 interrupt 모두 CPU와 입출력장치의 통신방식 pollinginterrupt polling interrupt 다른 프로세스에게 CPU를 양도하지 않고, 하드웨어 장치가 동작을 완료할때까지 계속 루프를 돌면서 하드웨어 상태를 체크하는 방식을 말한다. CPU가 프로그램을 실행하는 도중에 I/O나 다른 예외 상황발생으로 특별한 처리가 필요할때 CPU에 이를 알려 처리하도록 하는 것을 말한다. 운영체제는 I/O를 요청한 프로세스를 블록시키고 CPU를 다른 프로세스에게 양도한다. 인터럽트를 사용하면, CPU연산과 I/O장치 작업을 중첩시켜서 수행할 수 있게 되어 인터럽트를 통해 I/O처리를 하는 것이, polling보다 CPU의 사용률을 높이는 방법이다. 하지만 인터럽트가 폴링보다 무조건 ..
2024.01.11 -
멀티프로세스와 멀티스레드의 차이
스레드? 프로세스를 구성하는 실행 흐름의 단위 하나의 프로세스는 하나이상의 스레드를 가질 수 있다 단일 스레드 프로세스 : 실행 흐름이 하나인 프로세스 멀티 스레드 프로세스 : 실행 흐름이 여러개인 프로세스 (최근) 프로세스를 이루는 여러 명령어(여러 스레드)를 동시에 실행할 수 있다! 스레드의 구성요소 스레드 ID, 프로그램 카운터를 비롯한 레지스터값, 스택 등 스레드 마다 실행에 필요한 최소한의 정보를 가지고 있다. - 프로세스를 이루는 스레드들은 프로세스의 자원을 공유하며 실행된다. - 코드영역이 스레드마다 있는 것이 아니라, 위 그림과 같이, 하나의 코드영역을 여러개의 스레드가 공유하고 있는 것임! 멀티프로세스와 멀티스레드의 차이를 정확히 이해하자! 멀티 프로세스 : 동일한 작업을 수행하는 단일 ..
2024.01.11 -
부모 프로세스는 자식 프로세스를 어떻게 만들어내고, 자식프로세스는 어떻게 자신만의 코드를 실행할까?
프로세스 상태 아래의 프로세스 상태들은 PCB에 저장된다. 생성 상태(created) 이제 막 메모리에 적재되어 PCB를 할당받은 상태 준비 상태(ready) 당장이라도 CPU를 할당받아 실행할 수 있지만, 자신의 차례가 아니기에 기다리는 상태 자신의 차례가 된다면 실행상태(=디스패치)로 변함 실행 상태(running) cpu를 할당받아 실행중인 상태 할당된 시간 모두 사용시 (=즉, 타이머 인터럽트 발생 시), 준비상태로 돌아간다. 프로세스를 실행 도중 입출력장치를 사용하면, 입출력작업이 끝날 때까지 대기 상태로 대기 상태(blocked) 프로세스가 실행 도중 입출력장치를 사용하는 경우 입출력 작업은 CPU에 비해 느리기에, 이 경우 대기상태로 접어듬 입출력 작업이 끝나면 (=입출력 완료 인터럽트를 받..
2024.01.11 -
프로세스의 메모리 영역 중 사용자 영역은 어떻게 되어있을까?
프로세스의 메모리 영역 사용자영역과 커널영역 사용자 영역 코드영역(=텍스트영역) 실행할 수 있는 코드, 기계어로 이루어진 명령어가 저장된다. 데이터가 아닌, CPU가 실행할 명령어가 담기기에 쓰기가 금지된 Read-Only영역이다. 데이터영역 잠깐 썼다가 없앨 데이터가 아닌 프로그램이 실행되는 동안 유지할 데이터가 저장된다. ex) 전역변수 코드영역과 데이터 영역은 정적할당영역에 속한다. 힙 영역 프로그래머가 직접 할당할 수 있는 저장공간 낮은 주소 -> 높은주소로 할당된다. 스택 영역 데이터가 일시적으로 저장되는 공간 잠깐 쓰다가 말 값들이 저장되는 공간으로 ex) 매개변수, 지역변수 높은 주소 -> 낮은 주소로 할당된다. 힙영역과 스택영역은 동적할당영역에 속한다.
2024.01.11 -
PCB와 Context-Switch
프로세스란? 프로세스 = 실행중인 프로그램 프로세스들은 번갈아가며 한정된 시간만큼 CPU를 이용한다. 타이머 인터럽트가 발생하면 차례를 양보한다. 프로세스 종류 포그라운드 프로세스 사용자가 볼 수 있는 공간에서 실행되는 프로세스(ex:메모장) 백그라운드 프로세스 사용자가 볼 수 없는 공간에서 실행되는 프로세스 사용자와 직접 상호작용이 가능한 백그라운드 프로세스 데몬, 서비스 사용자와 상호작용하지 않고 그저 묵묵히 일만 수행하는 프로세스 PCB란? 프로세스 관련 정보를 저장하는 자료구조로, 마치 옷에 달려있는 태그라고 생각하면 된다. 프로세스 생성 시 PCB는 커널 영역에 생성이 되며, 종료시 폐기된다. 운영체제는 커널영역에 적재된 PCB를 보고 프로세스를 관리한다. PCB에 담기는 정보 프로세스 ID(P..
2024.01.11