OS
-
[Operating System] Virtual Memory운영체제 2023. 6. 1. 13:11
이전 Memory Management 포스팅에서 잠깐 Virtual Memory 에 대해 언급한 바 있습니다. 이번 포스팅에서 이것에 대해 자세히 알아보겠습니다. Virtual Memory 이전 Memory Management 방식에서 Paging, Segmentation 방식으로 메모리를 관리하는 방법에 대해 배웠습니다. 프로세스가 반드시 한 번에 메인 메모리에 로드되거나 Swap out 될 필요없이, 프로세스를 작게 쪼개 일부분만 올려 운용할 수 있습니다. 그렇기 때문에 일부분은 보조 기억장치에서 저장하고 있다가 필요할 때 메인 메모리에 로드하는 방법으로 메모리를 관리하면, 메인 메모리 공간을 더욱 효율적으로 사용할 수 있습니다. 이렇게 메인 메모리와 보조 기억장치를 함께 사용하여 프로세스를 관리하는..
-
[Operating System] Memory Management운영체제 2023. 5. 23. 13:29
운영체제는 프로세스의 할당과 반납 등 과정을 수행하기 위해 메모리 관리를 수행합니다. 그렇다면 메모리 관리란 무엇일까요? 메모리 관리란 다음 기능들을 의미합니다. 메모리의 할당 (Memory Allocation) 메모리의 보호 (Memory Protection) 메모리 재배치 (Relocation) 메모리 공유 (Sharing) 위 기능들에 대해 하나씩 알아봅시다. 메모리의 할당 (Memory Allocation) 메모리의 할당은, 물리적인 공간인 메인 메모리를 쪼개서 프로세스에게 할당하는 것을 의미합니다. 이 때, 메인 메모리를 효율적으로 사용할 수 있도록 적당한 크기의 공간을 프로세스에 할당 / 반납받아 관리하여야 합니다. 어떻게 메모리를 "쪼갤 수" 있는지, 어떻게 할당하고 반납하는 지는 뒤에 다루..
-
[Operating System] I/O 관리 및 디스크 스케쥴링운영체제 2023. 5. 20. 03:39
컴퓨터에는 여러 I/O Device 를 연결할 수 있습니다. 예를 들어, 데이터를 저장하기 위한 SSD, HDD 도 I/O Device 이고, 마우스, 키보드, 모니터 등도 I/O Device 입니다. 이번 포스팅에서는 위와 같은 I/O Device 를 운영체제가 어떻게 관리하는 지 알아보겠습니다. I/O Device I/O Device 는 전자장치로 구성되어 있는 Controller 부분과 Mechanical 하게 구현된 Machine 부로 구현되어 있습니다. HDD 를 예시로 살펴보겠습니다. HDD 의 디스크 부분은 Machine Arm 이 이동하여 데이터를 읽고 쓸 수 있습니다. HDD 의 컨트롤러 부분은 다음과 같이 구성되어 있습니다. 컨트롤러는 Control Register, Status Reg..
-
[Operating System] 동시성 제어 2운영체제 2023. 4. 15. 00:47
이전 포스팅에서 동시성 문제를 어떻게 해결할 수 있는가? 에 대한 소프트웨어적인 해결책에 대해 알아보았습니다. 이번 포스팅에서는 하드웨어의 Support 을 받아 동시성 문제를 해결하는 방법에 대해 알아봅시다. 먼저, 동시성 문제를 어떻게 해결할 수 있었는지 복습해봅시다. 동시성 문제의 해결책으로 두가지 방법이 있었습니다. 1. Critical Section 의 Code 를 실행할 때 Interrupt 를 Disable 해서 Atomic 하게 처리한다. 2. Critical Section 의 위/아래로 Entry Section/End Section 을 만들어 Critical Section 을 Fence 안에 두어 Mutual Exclusion 을 보장한다. 그리고 이 두가지 방법 중 2번째, Fence ..
-
[Operating System] 쓰레드운영체제 2023. 3. 28. 01:03
쓰레드란 무엇인가? 쓰레드가 쓰레드라고 불리는 이유는, 프로세스의 Instruction 을 수행할 때 그 위치를 점처럼 찍었다 생각하고 멀리서 보면 실처럼 보인다고 해서 쓰레드라고 불리게 되었다고합니다. 쓰레드의 정의는 프로세스에서 Instruction 을 실행하는 단위를 이야기한다고 합니다. 하지만 이보다 lightweight process 가 더 와닿는 표현 같습니다. 그 이유는 뒤에서 알 수 있습니다. 프로세스 vs 쓰레드많이, 자주 헷갈리는 개념이 프로세스와 쓰레드입니다. 프로세스와 쓰레드의 차이점에 대해서 하나씩 짚어봅시다. 쓰레드드의 정의를 프로세스에서 Instruction 을 실행하는 단위라고 했습니다. 조금 바꿔 말하면, 프로세스의 Instruction 을 수행하는 것이 쓰레드입니다.쓰레드..
-
[Operating System] 프로세스의 제어 : 프로세스 간 통신운영체제 2023. 3. 28. 00:03
예를 들어, A 학생이 짠 계산기 프로그램이 B 학생이 짠 Hello World 출력 프로그램에 관여할 일이 없는 것처럼 독립적으로 수행되는 프로세스는 다른 프로세스의 일에 관여할 필요가 없습니다. 하지만, 프로그램이 너무 거대해져서 이를 쪼개서 프로그래밍을 하게된 경우, 이 쪼개진 프로그램들끼리는 협력해야할 필요가 있습니다. 즉 한 프로세스가 다른 프로세스에 관여해야할 일이 생깁니다. 기본적으로 OS 는 한 프로세스가 자신의 메모리 접근 가능 영역을 벗어나 다른 프로세스의 메모리 영역으로 접근하려하면 이 프로세스를 제거해버립니다. 따라서 일반적인 방식으로는 프로세스 간 Communication 할 수 있는 방법이 없습니다. 어떻게 프로세스간 Communication 을 할 수 있을까? 앞서 말한 이유로..
-
[Operating System] 프로세스의 제어 : 프로세스의 종료운영체제 2023. 3. 27. 23:43
5-State Process Model 을 보면 Terminated 상태가 있었습니다. 프로세스의 종료는 언제 일어나는가? 1. 프로세스가 자신의 할 일을 정상적으로 모두 마치고나면, exit() 이라는 system call 을 호출하여 자신의 state 를 terminated 로 바꿉니다. 2. 프로세스가 자신의 할 일을 수행하다가 복구할 수 없는 오류를 발생시키면 terminated 됩니다. 3. 부모 프로세스가 자식 프로세스에게 kill signal 을 보내면 자식 프로세스는 terminated 됩니다. 좀비 프로세스 시스템 프로그래밍 시간에 좀비 프로세스에 대해 다루었습니다. 간단히 복기해보면 좀비 프로세스란 "종료되었지만 정리되지 않은 프로세스" 입니다. 정리되지 않으면, 엄연히 state 를 ..