os
[OS] Memory Management
Background - 프로그램은 실행을 위해 디스크에서 메모리로 적재되어야 함 - 메인 메모리와 레지스터들이 CPU가 접근할 수 있는 유일한 저장소임 - 레지스터에 접근하는 것은 1 CPU clock cycle 이하로 소요됨 - 메인 메모리에 접근하는 것은 수많은 cycle들을 소요할 수 있음 - Cache 접근은 메인 메모리에 접근하는 것과 CPU 레지스터에 접근하는 것 사이만큼의 시간이 소요됨 - 올바른 작동을 보장하기 위해 메모리 보안이 필요함 Memory Address Binding Memory Address Symbolic Address: 코드 단에서 설정하는 address (ex. a = 10) Virtual(Logical) Address: 프로그램이 이상적으로 사용하는 주소 체계 Physi..
[OS] CPU Scheduling
[OS] CPU 스케줄러 CPU 스케줄러란 ready queue에 들어있는 프로세스들의 CPU 점유 순서를 정하는 알고리즘이다. CPU 스케줄러 이번에 얘기하는 CPU 스케줄러는 저번 포스팅에서 언급했던 ready queue에 있는 프로세스들의 CPU 점유 순서를 정하는 알고리즘을 말함 오늘은 이 CPU 스케줄러의 종류에 대해 좀더 자세히 알아보고자 함 CPU 스케줄러가 결정을 내리는 부분 running -> waiting (비선점형) running -> ready (선점형) waiting -> ready (선점형) terminates (비선점형) Dispatcher: CPU의 제어권을 CPU Scheduler에 의해 선택된 프로세스에게 넘김. dispatcher의 처리속도가 빠르면 빠를 수록 좋음 Sc..
[OS] Process and Thread
Process Process: 실행중인 프로그램 = 즉, 실행파일이 메모리에 적재되고, CPU를 할당받아서 명령 수행중인 상태 이때, 실행파일 전체가 메모리에 올라가지 않고 일부만 올라감 + 나머지는 디스크의 특정 영역에 존재 어쨌든 프로세스를 위해 제공된 메모리가 어떻게 구성되어 있는지 알아야함. 어떻게? Process 메모리의 구성요소 Code(Text) 실행할 프로그램의 코드가 저장되는 영역 CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리함 Data 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸함 Stack 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역 함수의 호출과 함께 할당되며, 함수의 호출이 ..
[OS] Computer System Overview
Processor(CPU) program vs process vs processor Program: 일반적으로 하드 디스크 등에 저장되어 있는 실행 코드 Process: program을 구동하여 program 자체와 program의 상태가 메모리 상에서 실행되는 작업 단위 Processor(CPU): 제어장치, 연산장치, 레지스터 그리고 데이터 버스로 구성된 디지털 시스템의 핵심 부분. 프로그램을 기억장치로부터 읽어 데이터를 처리하고 각종 장치를 구동. ex) 하나의 프로그램을 여러 번 구동하면 여러 개의 프로세스가 메모리 상에서 실행됨 ex) 프로세서는 프로그램을 기억장치로부터 읽어와 구동시킴. 구동시킨 프로그램이 프로세스. 프로그램 실행 과정 1. 사용자가 단축 아이콘 혹은 명령행에서 프로그램을 실행..
[OS] Process 동기화(1)
[OS] Process 동기화(1) Process 동기화란 여러 프로세스가 공유하는 자원의 일관성을 유지하는 것 임계구역(Critical Section) 문제 do { entry section critical section exit section remainder section } while(TRUE); 임계구역은 여러개의 프로세스가 수행되는 시스템에서 각 프로세스들이 공유하는 데이터를 변경하는 코드 영역을 말함 간단하게 말하면, A라는 변수를 2개의 프로세스가 공유한다고 해보자. 각 프로세스가 코드에서 A 값을 변경한다면 해당 코드는 임계구역이다. 임계구역을 해결하기 위해서 만족해야 하는 조건 Mutual exclusion(상호배타): 임계구역에 오직 한 프로세스만 진입 가능 Progress(진행): ..
[OS] 동기와 비동기
[OS] 동기와 비동기 동기는 어떤 일이 끝난 후에 다음일을 하는 것, 비동기는 어떤 일이 끝나지 않더라도 다음 일을 수행할 수 있는 것이다. Blocking & None-Blocking 동기 & 비동기를 살펴보기 전에 blocking & none-blocking 먼저 살펴보자 Blocking I/O 작업은 user level에서 직접 수행할 수 없고 kernel level로 들어가야 한다. 따라서 user level에서 kernel level로system call을 보내서 I/O 작업을 수행한다. 이때 application 단의 스레드에 block이 걸린다. (I/O 작업이 끝나기 전까지 반환되지 않기 때문) 그리고 kernel level에서 해당 I/O 작업이 끝나고 데이터를 반환하면 그때서야 app..
[OS] 멀티스레딩 & 메모리 공간
[OS] 멀티스레딩 & 메모리 공간 멀티스레딩이란 하나의 프로세스를 다수의 스레드로 나눠서 작업을 실행하는 것 멀티스레딩 멀티스레딩이란 하나의 프로세스를 다수의 실행 단위인 스레드로 나눠서 작업을 실행하는 것을 말함 장점 메모리 공간과 시스템 자원 소모가 줄어듬 스레드 간의 통신에 별도의 자원을 이용하는 것이 아니라 전역 변수의 공간 또는 동적으로 할당된 공간인 heap 영역을 이용하여 데이터를 주고 받아 멀티 프로세스(프로세스 여러개로 실행하는 방식, 멀티 프로세스의 경우 IPC와 같은 통신 사용)보다 훨씬 간단 (이전 글: 스레드는 레지스터와 stack만 독립적으로 갖고 나머지는 공유한다) 스레드의 context switch(실행하던 스레드를 멈추고 다른 스레드를 실행 시키면서 실행에 필요한 정보들을..