Computer Science/OS
-
CS : OS : MemoryComputer Science/OS 2021. 3. 25. 16:35
Memory Structure CPU와 가까운 순서의 메모리 구조 Register -> Cache Memory -> Main Memory -> 보조기억장치 -> 외부기억장치 CPU로부터 멀어질수록, 용량이 커지고 접근 속도는 느려진다. Stack 영역 프로그램이 자동으로 사용하는 메모리 영역이다. 함수 호출과 관계되는 지역변수, 매개변수가 저장된다. 함수 호출 시 생성되고, 함수가 종료되면 반환된다. stack의 크기는 각 프로세스마다 할당되지만, 프로세스가 메모리에 로드될 때 stack 크기가 고정되어, 런타임 시 stack 크기를 변경할 수 없다. Heap 영역 필요에 의해 메모리를 동적으로 할당할 때 사용되는 메모리 영역이다. 동적 메모리 영역이라고도 한다. 클래스와 클로저가 이 부분에 해당한다. ..
-
CS : OS : KernelComputer Science/OS 2021. 3. 25. 15:50
Kernel 컴퓨터에 전원을 켜면 운영체제는 이와 동시에 수행된다. 운영체제도 소프트웨어이기 때문에, 전원이 켜짐과 동시에 메모리에 올라가야 하는데, 덩치가 너무 크기 때문에 이와 같은 작업을 전원을 켤 때마다 하는 것은 비효율적이다. 따라서, 운영체제 전체 중 항상 필요한 부분에 대해 전원이 켜짐과 동시에 메모리에 올리고, 운영체제 전체 중 필요 없는 부분에 대해서는 필요할 때 메모리에 올려서 사용한다. 이 때, 메모리에 상주하는 운영체제의 부분을 커널(kernel)이라고 한다. 다시 말해, 운영체제는 커널을 포함하는 더 큰 개념이고, 커널은 운영체제의 핵심 부분이다. 커널의 핵심 역할은, '보안', '자원 관리', '추상화'이다. Shell 커널의 사용자와의 상호작용을 위해, 시스템 프로그램이 필요하..
-
CS : OS : ProcessComputer Science/OS 2021. 3. 25. 12:08
Process 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 운영체제로부터 시스템 자원을 할당받는 작업의 단위 프로세스는 각각 독립된 메모리 영역을 할당받는다. 각 프로세스는 별도의 주소 공간에서 실행되고, 한 프로세스는 다른 프로세스의 변수나 구조에 접근할 수 없다. 접근하려면, IPC(프로세스 간 통신)를 사용해야 한다. (pipe, file, socket 등) Thread 프로세스 내에서 실행되는 여러 흐름의 단위 프로세스가 할당받은 자원을 이용하는 실행의 단위 각각의 스레드는 code, data, heap 영역은 공유하고, stack 영역은 따로 할당받는다. 각각의 스레드는 힙 메모리는 서로 읽고 쓸 수 있고, 레지스터와 스택을 별도로 가진다. Multi-Processing 하나의 응용 프로그..
-
Pintos Project #3 : Thread schedulingComputer Science/OS 2020. 5. 29. 15:22
1. 프로젝트 개요 pintos에 priority scheduler를 구현한다. 추가적으로, priority inversion을 해결하기 위해 priority inheritance 기능을 구현한다. 2. 문제 분석 현재 pintos는 RR방식의 scheduler가 구현되어 있다. 이를 수정하여 preemptive dynamic priority scheduling을 구현한다. 여기서 말하는 “preemptive하다, dynamic하다”는 의미는 thread가 run이던 도중에 자신의 priority보다 높은 priority를 가진 thread가 있다면 cpu를 반납한다는 의미이다. priority scheduling의 단점은 priority inversion이 생길 수 있다는 것이다. 이를 해결하기 위해서..