본문 바로가기

Computer Science/OS7

[OS] 프로세스 관리 (2) 1. fork() 시스템콜 fork()는 새로운 프로세스를 만들어달라는 요청이다. fork를 하게 되면 fork가 이루어진 그다음 시점부터 자식 프로세스가 실행을 하게 된다. 그 이유는, 자식 프로세스가 부모 프로세스의 context(정확히는 Program Counter)를 복제해서 main함수의 시작 부분이 아닌, pid = fork(); 부분부터 실행해야 하기 때문이다. 2. exec() 시스템콜 exec()는 어떤 프로그램을 완전히 새로운 프로세스로 태어나게 하는 역할을 한다. exec를 실행하면 main 함수 처음부터 돌아가 실행하게 된다. 그러나 반드시 자식 프로세스를 만들어서 exec를 해야 하는 것은 아니다. 즉, 위 코드에서 pid = fork(); 부분이 없어도 된다. 3. wait() .. 2021. 12. 16.
[OS] 프로세스 관리 (1) - 부모 프로세스(Parent Process)가 자식 프로세스(Children Process)를 생성한다. - 생성하는 방법으로는, 보통 복제 생성을 한다. 부모 프로세스에는 주소 공간이 있다. 그 주소 공간을 자식 프로세스가 그대로 복제한다(PCB와 자원들). 복제한 곳에 새로운 프로그램을 덮어 씌운다. 복제 생성은 fork 시스템콜의 역할이다. 복제한 후 다른 프로그램으로 덮어 쓰이는 것은 exec 시스템콜의 역할이다 - 프로세스들은 트리를 형성한다. - 프로세스가 실행기 되기 위해선 자원(CPU, 메모리)이 필요하다. 이 자원은 운영체제로부터 받으며, 부모와 자식이 공유하는 경우가 있다. - 프로세스가 실행될 때 부모와 자식이 공존하며 실행하는 모델이 있고, 자식을 하나 생성 후 그 자식이 종료(t.. 2021. 12. 2.
[OS] 프로세스 (2) 1. Thread란 프로세스 내부에 CPU 수행 단위가 여러 개 있는 경우를 말한다. 프로세스 하나 당 code, data, stack으로 이루어진 주소 공간이 만들어진다. (조금 더 자세한 내용은 링크로) 프로세스 하나를 관리하기 위해 운영체제 내부에 프로세스의 상태 등을 나타내는 PCB가 있다. 쓰레드들은 프로세스 하나에서 서로 공유할 수 있는 것들은 최대한 공유한다. 공유하는 것들(task) : 메모리 주소 공간, 프로세스 상태, 프로세스가 사용하는 각종 자원 (code section, data section, OS resource) 별도로 갖는 것 : CPU 수행과 관련된 정보들(PC, 레지스터, 스택) 즉, 쓰레드는 PC, register set, stack space로 구성되어 있다. 2. T.. 2021. 12. 1.
[OS] 프로세스 (1) 1. 프로세스란 실행 중인 프로그램을 뜻한다. 2. 프로세스의 문맥 프로세스가 실행이 시작되면, 프로세스만의 독자적인 주소 공간을 형성한다. 이 프로세스가 CPU를 얻게 되면 PC(Program Counter)라는 레지스터가 이 프로세스의 code 어느 한 부분을 가리키게 되고, 매 순간 instruction을 하나씩 읽어서 CPU 안으로 불러들인다. 레지스터에 어떤 값을 넣은 뒤 ALU(산술논리 연산장치)에서 어떤 연산을 하고 그 결과를 레지스터에 저장하거나 바깥의 메모리에 저장하는 과정이 발생한다. 이 과정이 반복되는 중, 어느 시점에 프로세스가 어디까지 와 있는가를 규명하는데 필요한 요소를 '프로세스의 문맥' 이라 한다. 이러한 프로세스의 문맥을 나타내기 위해서는 Program Counter가 어디.. 2021. 11. 30.
[OS] 프로그램의 구조와 실행 1. 동기식 입출력 (Synchronous) 동기식 입출력에서는 I/O를 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에게 넘어간다. I/O는 커널을 통해서만 할 수 있다. 사용자 프로그램이 I/O 요청을 커널에게 하면, 그 I/O 장치에 맞는 디바이스 드라이버를 거치고 실제 하드웨어를 통해서 I/O를 한다. I/O는 시간이 걸리는 작업이기에 어느 정도 시간이 흐른 뒤에야 I/O가 끝난 것이 도착하고, 이를 보고 사용자가 다음 작업을 한다. 동기식 입출력에서는 I/O 작업이 끝날 때까지 아무 일도 안 하고 기다려야 하므로 CPU가 낭비된다. 매 시점 하나의 I/O만 일어나기 때문에 I/O 장치도 낭비된다. 2. 비동기식 입출력 (Asynchronous) 사용자 프로그램이 I/O 요청을 커널.. 2021. 11. 18.
[OS] 컴퓨터 시스템의 동작 원리(컴퓨터 시스템 구조 & 입출력 수행) 흔히 컴퓨터 시스템의 구성을 이야기할 때, 컴퓨터 시스템은 컴퓨터와 입출력 장치로 이루어져 있다고 말한다. 여기서 컴퓨터는 CPU와 Memory로 이루어져 있다. 또한, 입출력 장치에서의 입력은 입출력 장치의 데이터가 컴퓨터 안으로 들어가는 것을, 출력은 그 데이터를 받아서 컴퓨터에서 처리 후 결과를 다시 입출력 장치로 내보내는 것을 말한다. 컴퓨터 시스템은 위 그림처럼 매우 복잡하게 이루어져 있다. 좌측의 CPU와 Memory로 구성된 것이 컴퓨터이고 우측의 디스크, 키보드, 마우스 등으로 구성된 것이 입출력 장치이다. 위 그림의 다양한 용어들을 하나하나씩 살펴보겠다. 1. CPU CPU에서는 매 순간마다 메모리에서 instruction(기계어)을 하나씩 읽어서 실행한다. 이 하나의 instructio.. 2021. 11. 5.