Operating System
-
[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 를 ..
-
[Operating System] 프로세스의 제어 : 프로세스 스위칭운영체제 2023. 3. 20. 20:33
프로세스 스위칭 (혹은 컨텍스트 스위칭) 프로세스 스위칭이란, CPU 가 처리하는 프로세스가 바뀌는 것을 의미합니다. 단, 이것은 Mode Change 와는 다릅니다. "프로세스가 스위칭되었다" 라고 이야기하기 위해서는 프로세스의 컨텍스트가 완전히 바뀌어야합니다. 아래 그림을 살펴봅시다. 언뜻 보면 위 그림에서 "task A 를 처리하다가 Kernel Execution 을 하고 있으니 커널 프로세스로 간 것이 아닌가?" 라고 착각할 수 있습니다. 하지만 커널 내부의 인스트럭션을 수행하는 것은 "모드 체인지"이지 "컨텍스트 스위칭 (혹은 프로세스 스위칭)" 이 아닙니다. 커널은 각 프로세스마다 마치 라이브러리처럼 있는 것입니다. 이전 포스팅에서 살펴봤던 Virtual Address Space 를 떠올려보면..
-
[Operating System] 프로세스의 제어 : 프로세스의 생성운영체제 2023. 3. 20. 20:30
프로세스의 제어 : Creation 프로세스의 생성은 다음과 같은 절차를 따릅니다. 절차만 보고는 프로세스의 생성과정을 이해하기 쉽지 않으니 다음 예시들을 보며 이해해봅시다. 프로세스 생성 예시 먼저 위 그림과 같이 fork (자식 프로세스를 생성하는 명령) 하기 전에 부모 프로세스가 있다고 생각해봅시다. PCB 안에는 프로세스 컨텍스트가 가지고 있는 code, data, stack 블럭의 시작과 끝 주소를 pointing 하는 정보가 들어있습니다. 다음으로 부모 프로세스 (PCB Id = 11) 에서 fork() 를 통해 자식 프로세스 (PCB id = 12) 를 생성하였습니다. fork 이후 생성된 자식 프로세스 User Context 의 Code 블럭은 부모 프로세스 User Context 의 Co..
-
[Operating System] 프로세스의 제어 기본 개념운영체제 2023. 3. 20. 17:05
Process Control 프로세스의 제어는 두가지 Mode 에서 일어납니다. 하나는 User Mode 이고 다른 하나는 System Mode 입니다. 유저 모드는 유저 컨텍스트에서 동작하는 시간을 이야기하고 System Mode 는 시스템 컨텍스트에서 동작하는 시간을 이야기합니다. 그리고 이 User Mode 에서 System Mode 로 혹은 그 반대방향으로 이동하는 것을 Mode Change 라고 부릅니다. Virtual Address Space 관점에서 프로세스 제어의 이해 다음과 같이 동작하는 프로세스들이 있다고 생각해봅시다. 프로세스 A는 5000~ 번지부터 인스트럭션이 담겨있습니다. 프로세스 B는 8000~ 번지부터 인스트럭션이 담겨있습니다. 프로세스C는 12000~ 번지부터 인스트럭션이 ..
-
[Operating System] Process Context운영체제 2023. 3. 20. 16:46
Context 의 정의 the execution environment of a program. Process Context 프로세스 컨텍스트는 두가지 부분으로 구성됩니다. User Context System Context User Context 는 프로그래머가 작성한 프로그램에 의해 생성되는 Context 입니다. Code 블럭, Data and bss 블럭, 그리고 유저 프로그램에서 호출되는 함수를 위한 User Stack 블럭으로 이루어져있습니다. System Context 는 커널 영역의 Context 입니다. 커널 내부의 함수를 호출하기 위한 Kernel Stack 과 PCB(Process Control Block) 로 이루어져있습니다. 다음 예시 코드를 살펴보며 프로세스 컨텍스트에 대해 이해해봅..
-
[Operating System] 프로세스 (Process)운영체제 2023. 3. 18. 10:44
프로세스의 정의 프로세스란, 실행 중인 프로그램 (a program in execution) 을 의미합니다. 실행 중 (in execution) 의 의미는 뒤에서 다룰 내용인 프로세스의 Running 상태와는 다른의미입니다. 프로그램은 인스트럭션의 연속이었음을 떠올리며 공부해봅시다. 프로세스는 누구에 의해 생성되는가? 프로세스는 무엇에 의해 생성될 수 있을까요? 1. By a human 사람이 GUI 나 Command Line Interface 와 같은 Command Interface 를 통해서 프로그램을 실행시킬 수 있습니다. 즉, 프로세스가 생성될 수 있습니다. 2. By a process 운영체제의 프로세스나 유저 프로세스에 의해서 프로세스가 생성될 수 있습니다. 프로세스는 누구에 의해 종료되는가?..