목록CS/운영체제 (7)
되자!백엔드개발자
프로세스의 생성 프로세스는 부모 프로세스로부터 자식 프로세스를 복제(fork())하는 방식으로 생성한다. 먼저 자식이 부모의 주소공간을 복사하고 새로운 프로그램을 덮어(exec()) 씌운다. 프로세스 생성 시 사용되는 시스템 콜 fork() : 새로운 프로세스를 생성 부모를 그대로 복사 주소공간 할당 exec() : 새로운 프로그램을 복제된 프로세스에 덮어씌움 시스템 콜을 이용한다는 것은 OS가 대신 해준다는 것이다. 부모-자식형태이므로 프로세스는 트리(계층 구조)형성 프로세스는 자원을 필요로 한다. (CPU, Memory 등) 자원은 운영체제로부터 받는다. 부모 프로세스와 공유하는 경우도 있다. 자원의 공유 원칙적으로는 부모와 공유하지 않지만 공유하는 경우도 있다. 일부를 공유하는 모델 전혀 공유하지 ..

Thread 쓰레드는 CPU수행 단위를 말한다. 프로세스가 실행되면 stack, data, code로 구성된 별도의 주소공간이 생성되고 OS 커널이 PCB를 생성한다. 이렇게 생성된 PCB안의 PC(Program Counter)는 주소공간의 code를 가리키고 있다고 지난시간에 공부했다. 그런데 동일한 일을 하는 프로세스가 여러개 있다면 어떨까? 프로세스마다 별도의 주소공간과 PCB가 생성되서 메모리가 낭비 될 것이다. 공유해도 되는 내용은 메모리 공간을 하나만 띄어놓고 각 프로세스마다 구별되는 부분의 코드를 실행하도록 하는게 훨신 효율적이다. 이런 개념에서 쓰레드라는 개념이 생겼다. 공통되는 프로세스는 하나만 생성하고 현재 프로세스가 어떤 코드를 식행하는지 담고있는 PC, 해당 프로세스를 진행하던 CP..

Process Context 💡 process context : 프로세스가 어떤 상태에서 수행되고 있는지 정확히 규명하기위해 필요한 정보. 하나의 단어가 여러 의미로 사용된다. 그 단어가 어떤 의미로 사용되는 지는 문맥에 따라 결정된다. 이와 같이 프로세스도 특정 시점을 놓고 봤을 때 해당 프로세스가 어느 instruction을 실행하고 있었는지, 어떤 데이터를 가지고 있는지 파악할 수 있어야하고 이러한 정보를 context라고 한다. 프로세스가 수행되는 과정은 아래와 같다. 지난 게시글에서 프로세스마다 독자적인 주소공간(stack, data, code)을 만든다고 했다. 프로세스가 CPU를 잡게 되면 Program Counter(이하 PC)라는 레지스터가 프로세스 주소공간의 code 부분을 가리키며 기..

동기식/비동기식 입출력 💡 동기식 입출력(Synchronous I/O) I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어가는 경우이다. ex) 프로그램에서 필요한 데이터를 읽어와서 처리해야 되는 경우 => 동기식처리를 한다. 작동 예시 사용자 프로그램이 OS에게 System call로 I/O 요청 → 운영체제는 커널을 통해서 Device controller에게 I/O요청→ drive controller에게 I/O를 요청하는 동안 요청한 request process(CPU)는 기다린다.→ 작업이 끝나면 device controller이 CPU에게 interrupt를 건다. 구현방법 1 I/O가 끝날 때까지 CPU를 낭비시킴 매 시점 하나의 I/O만 일어날 수 있어 I/O도 낭비 하..

앞으로 배울 것에 대한 Overview를 진행했습니다. 컴퓨터 시스템 구조 Hard Disk : 하드디스크를 보조디바이스로 보기도 하지만 IODevice로 보기도 한다. 메모리가 하드디스크에서 읽어들이기도하고 처리 결과를 하드디스크에 저장하기도 하기 때문. device controller: 각각의 IO 디바이스가 가지고 있는 CPU 비슷한 것이다. ex) Disk의 내부 통제는 디스크에 붙어있는 device controller가 해준다. local buffer: 각각 IO device의 작업공간이다. Memory : Main CPU의 작업공간. CPU는 메모리에서 읽어서 instruotion을 실행. register: CPU안에 있는 메모리보다 더 빠르면서 정보 저장하는 작은 공간 mode bit : 현..

1. 운영체제가 어떤 역할을 담당하는지, 2. 그 결과가 무엇인지, 3. 운영체제에는 어떤 종류가 있는지 에 관하여 깊게 들어가지 않고 가볍게 훑던 강의였습니다. 운영체제란? 컴퓨터 하드웨어 바로 위에서 작동하는 프로그램을 말한다. 편리한 환경 제공 → 프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행 컴퓨터 시스템의 자원을 효율적으로 관리. 자원 관리자 프로세서, 기억장치, 입출력 장치 등이 자원 형평성 있는 자원 분배 주어진 자원으로 최대한의 효율을 내도록 실행 중인 프로그램에게 짧은 시간씩 CPU를 번갈아 할당. 실행 중인 프로그램에게 메모리 공간을 적절히 분배 좁은 의미로는 커널
사실 운영체제에 관해서는 "하드웨어를 제어해주는 프로그램 ", "윈도우, 리눅스가 해당한다" 정도만 알고 있었고 더 공부해야하는 필요성을 느끼지 못하고 있었습니다. 그냥 면접을 위한 CS로 나중에 공부해야겠다는 부채감만 갖고 미뤄두고 있었는데 개발을 진행하니 배포를 하고싶고, 배포를 하자니 리눅스나 SSH에 대해 나오고, 운영체제나 대한 기본 지식이 부족하니 공부해도 제대로 이해했는지 확신이 안 섰습니다. CS의 중요성을 느끼며 ㅎㅎ KOCW에서 제공해주고 있는 이화여대의 반효경 교수님의 강의를 기반으로 운영체제에 공부해봅니다. 들으면서 블로그에 강의 내용을 정리해보려고요. 운영체제 운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는..