본문 바로가기

Computer Science/Operating System

(9)
메모리 (Memory) 프로그램과 프로그램 수행에 필요한 데이터 및 코드를 저장하는 장치내부 기억 장치인 주기억장치와 외부 기억 장치인 보조기억장치로 분류됨 - 주기억장치 : DRAM, CPU 안에 있는 레지스터와 캐쉬 등 - 보조기억장치 : SSD, HDD 등 메인 메모리 CPU가 직접 접근할 수 있는 기억장치 프로그램이 실행되려면 프로그램이 메모리에 올라와야 한다. 가상메모리 초창기 : 사용 가능한 RAM의 용량이 가장 큰 실행 애플리케이션의 주소 공간보다 작을 경우, 메모리 부족 오류로 해당 애플리케이션을 실행할 수 없었음 오버레이 기법 : 애플리케이션의 일부분만 기억장치에 올려 실행하도록 지정하여 해결하려 했으나, 시스템이 프로그램을 위한 충분한 메모리를 갖추고 있지 않은 경우에는 같은 오류가 발생함. 가상메모리 기법 ..
CPU 스케줄링 CPU를 잘 사용하기 위해 프로세스를 배정하는 방법으로 오버헤드와 기아현상을 낮추고, 사용률을 높여야한다. 선점/비선점 스케쥴링 선점 스케줄링 OS가 CPU의 사용권을 선점할 수 있는 경우, 강제 회수하는 경우(처리시간 예측 어려움) Priority Scheduling 정적/동적으로 우선순위를 부여하여 우선순위가 높은 순서대로 처리 우선순위가 낮은 프로세스가 무한정 대기하는 Starvation이 생길 수 있음 Aging 방법으로 Starvation 문제 해결 가능 Round Robin FCFS에 의해 프로세스들이 보내지면 각 프로세스는 동일한 시간의 Time Quantum(실행의 최소 단위 시간)만큼 CPU를 할당받음 할당 시간이 크면 FCFS와 같게 되고, 작으면 Context Switching이 잦아..
IPC(Inter Process Communication) 프로세스는 독립적인 메모리 공간에서 실행되는 특징을 가지고 있지만, 프로세스간 자원을 공유해야하는 경우가 생길 수 있다. 이 때 활용되는 통신 기술이 IPC 통신이다. 프로세스는 커널이 제공하는 IPC 설비를 이용해 프로세스 간 통신을 할 수 있게 된다. IPC의 종류 1. PIPE (익명 PIPE) 파이프는 두 개의 프로세스를 연결하고, 하나의 프로세스는 쓰기만, 다른 하나는 읽기만 가능하다. 한쪽 방향으로만 통신이 가능한 특징 때문에 Half-Duplex(반이중) 통신이라고 부르기도 한다. 2. Named PIPE(FIFO) 전혀 모르는 상태의 프로세스들 사이 통신에 사용한다. 익명 PIPE와 달리 부모 프로세스와 무관한 다른 프로세스도 통신이 가능하지만, 반이중 통신이라는 점은 동일하다. 3. Me..
PCB와 Context Switching Process Management 프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것을 말한다. 이 때, CPU는 프로세스를 관리하기 위해 각 프로세스에 대한 정보를 가지고 있어야하는데, 이 프로세스들의 특징을 갖고 있는 것이 Process Metadata이다. 이 메타데이터는 PCB (Process Control Block)에 저장된다. PCB(Process Control Block) 프로세스 정보가 PCB에 저장되는 과정 프로그램 실행 → 프로세스 생성 → 프로세스 주소 공간에 (코드, 데이터, 스택) 생성 → 이 프로세스의 메타데이터들이 PCB에 저장 PCB란? 운영체제가 프로세스에 대한 정보를 저장해놓을 수 있는 저장 장소로 다음과 같은 정보를 저장한다. PID : 프로세스의 고유 번호..
페이징과 세그먼테이션 다중프로그램 시스템에 여러 프로세스를 수용하기 위해 주기억 장치를 동적 분할하는 메모리 관리 작업이 필요해서 사용한다. 연속 메모리 기법 주소 공간을 메모리의 한 곳에 연속적으로 적재하는 방식. 물리적 메모리를 다수의 분할로 나누어 하나의 분할에 하나의 프로세스가 적재된다. 고정분할 방식 물리적 메모리를 정해진 개수만큼 영구적인 분할로 나누고 각 분할에 하나의 프로세스를 적재하는 방식 외부단편화, 내부단편화가 발생할 수 있다. 가변분할 방식 메모리에 적재되는 프로그램의 크기에 따라 분할의 크기, 개수가 동적으로 변하는 방식 외부단편화가 발생할 수 있다. 어느 메모리 공간에 어느 프로세스를 올릴지 결정해야한다. 최초적합 : 가장 먼저 나오는 메모리 공간에 프로세스 적재 최적적합 : 가장 딱 맞는 메모리 공..
페이지 교체 알고리즘 페이지 부재 발생 시 새로운 페이지를 할당해야하는데, 어떤 페이지를 교체할지 결정하는 방법 가상메모리는 요구 페이지 기법을 통해 필요한 페이지만 메모리에 적재하고 사용하지 않는 부분은 그대로 둠 하지만 메모리는 결국 가득 차게 되고, 사용이 다 된 후에도 자리만 차지할 수 있음. 따라서 메모리가 가득 차면, 안 쓰는 페이지는 out하고, 해당 공간에 필요한 페이지를 in 시켜야 한다. (out page = victim page) 이왕이면 수정이 되지 않는 페이지를 선택해야 좋다. CPU 주소 요구에 따라 페이지 결함이 일어나지 않는 부분을 생략하여 표시하는 방법 메인 메모리에 올라와 있는 주소들은 페이지 단위로 가져오기 때문에 페이지 번호가 연속되어 나타날 경우 페이지 결함이 발생하지 않는다. 페이지 교..
인터럽트 (Interrupt) 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황에 대한 우선 처리가 필요함을 CPU에게 알리는 것 인터럽트 우선순위 인터럽트가 2개 이상 발생했을 경우 먼저 처리할 인터럽트를 정해야 한다. 전원 공급 이상 CPU의 기계적인 오류 외부 신호에 의한 인터럽트 입출력 전송 요청 및 전송 완료, 전송 오류 명령어 오류 프로그램 검사 슈퍼바이저 호출(SVC) 위의 우선순위를 판별하는 방법에 폴링과 데이지체인 기법 등이 있다. 1. 인터럽트 방식 (하드웨어적인 방법) - 마이크로 컨트롤러(MCU) 자체가 하드웨어적으로 변화를 체크하여 변화 시에만 일정한 동작을 하는 방식 Daisy Chain : 인터럽트가 발생하는 모든 장치를 한 개의 회선에 직렬로 연..
프로세스 & 스레드 프로세스와 스레드 프로세스 (Process) 스레드 (Thread) 운영체제로부터 자원을 할당받은 작업의 단위 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위 각각 별도의 주소공간 할당(독립적) 자신만의 고유 공간과 자원을 할당받아 사용 Stack만 할당 받고 나머지 영역은 서로 공유 다른 스레드와 공간, 자원을 공유하면서 사용 Code : 코드 자체를 구성하는 메모리 영역 Data : 전역변수, 정적변수, 배열 등 초기화된 데이터는 data 영역에 저장 초기화되지 않은 데이터는 bss 영역에 저장 Heap : 동적 할당 시 사용 (new(), molloc() 등) Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역) 멀티 프로세스 & 멀티 스레드 멀티 프로세스 멀티 스레드 장점 - 안..