CS/운영체제 7

[운영체제] 멀티 스레드와 멀티 프로세스

멀티 스레드 멀티 스레드란? 싱글 스레드는 하나의 프로세스에서 하나의 작업만이 가능했다. 하지만 멀티 스레드는 하나의 프로세스에 여러 개의 스레드가 존재하고 각각 여러 개의 일을 수행하도록 한다. 멀티 스레드를 사용하는 이유 각각의 프로세스는 별도의 메모리를 갖고 있으며 프로세스끼리 통신을 할 때는 IPC를 통해 할 수 있다. 하지만 스레드는 코드, 데이터, 힙 영역을 공유하며 고유의 스택 영역을 갖고 있고 힙 영역을 통해 스레드끼리 통신을 할 수 있어 비교적 간단하다. 또한 CPU를 점유하고 있는 프로세스를 교체하는 작업인 문맥 교환이 일어날 때 현재 실행 중인 프로세스를 PCB에 저장하고 다음 차례인 프로세스의 정보를 가져와 실행시키는 작업이 많이 일어나게 되면 자원의 소모가 늘어나고 처리량이 저하된..

CS/운영체제 2021.11.22

[운영체제] 교착상태가 무엇일까?

프로세스가 실행되기 위해서는 CPU, 메모리, 파일 등과 같은 여러가지 자원이 필요하다. 이 중 하나의 자원만 부족해도 프로세스가 실행되지 못한다. 따라서 운영체제는 이러한 자원을 관리하여 프로세스에게 적절히 배분해줘야 한다. 이때 교착상태가 일어나는데 교착상태의 개념과 교착상태의 원인, 해결법을 알아보자. 교착상태란? 입구가 두 개이고 한 명만 지나갈 수 있는 골목이 있다. 이 때 양쪽의 입구에서 사람들이 골목을 지나가려고 한다. 하지만 서로 반대편 사람이 먼저 지나가는 것을 기다리고 있어 아무도 골목을 들어서지 못하고 있다. 이처럼 두 개 이상의 서로 다른 프로세스가 다른 프로세스의 작업이 끝나기만을 기다리고 있어 어떠한 프로세스도 완료되지 못하는 것을 교착상태라 한다. 프로세스 A와 B가 있을 때 ..

CS/운영체제 2021.10.12

[운영체제] 시스템 콜이란 무엇일까?

운영체제는 커널 모드와 사용자 모드로 나뉘어 운영된다. 프로그램에서 파일 읽기, 파일 쓰기 등은 커널 모드를 통해 동작한다. 이때 시스템 콜은 커널 영역의 기능을 사용자 모드에서 사용할 수 있도록 한다. 시스템 콜의 개념과 동작 과정을 알아보자. 개념 시스템 콜은 응용 프로그램에서 커널이 제공하는 기능을 사용하기 위한 인터페이스다. 이를 통해 프로세스가 하드웨어에 직접 접근하여 디스크에 저장되어 있는 파일을 읽는 등의 기능을 수행할 수 있다. 프로그램은 고유의 주소를 갖고 있으며 함수 호출이 발생하면 해당 주소 내에서 접근하여 함수를 실행할 수 있다. 하지만 프로그램의 주소를 벗어난 공간에 접근하기 위해서는(커널 영역) 시스템 콜을 사용할 수 있다. 시스템 콜의 동작 과정 프로그램에서 디스크에 저장되어 ..

CS/운영체제 2021.10.07

[운영체제] 인터럽트가 무엇일까?

인터럽트는 끼어들기라고 생각하면 쉽게 이해할 수 있다. 이미 진행하고 있는 일을 중간에 끼어들어 가로채서 다른 사람이 그 일을 진행하는 것이라고 일단 생각해보자. 그리고 인터럽트의 정의와 종류, 처리 과정을 알아보면서 이해해보자. 개념 CPU는 매번 프로그램 카운터가 가리키는 곳의 명령을 수행한 후에 다음 명령을 수행하기 직전에 인터럽트 라인을 확인한다. 이때 인터럽트 라인에 인터럽트가 발생했을 때는 지금까지 수행하던 일을 PCB에 저장하고 인터럽트를 수행한다. 만약 인터럽트를 처리하는 중에 또 다른 인터럽트가 들어온다면 어떻게 할까? 결론적으로 인터럽트 처리 중에 다른 인터럽트를 허용하지 않는다. 왜냐하면 A라는 인터럽트가 어떤 데이터를 변경을 하고 있는데 B라는 인터럽트가 들어왔다고 가정해보자. B라..

CS/운영체제 2021.09.29

[운영체제] PCB : 프로세스 제어블록

우리는 PC를 이용해 웹 서핑을 하고 동시에 음악을 들으며 친구한테 메시지를 보낸다. 우리는 이러한 일들이 동시에 일어나고 있다고 느낀다. 하지만 실제로 굉장히 빠른 시간에 프로세스들이 교체되어 실행되는 것이다. 이때 운영체제가 현재 실행되고 있는 프로세스들을 관리하여 실행을 유지할 수 있는 정보들이 저장된 자료구조를 PCB(Process Control Block)이라고 한다. PCB의 구성요소 프로세스를 할당하거나 프로세스가 교체되었을 때 지금까지 수행된 내용을 기록하기 위해서는 PCB 내의 여러가지 요소들이 사용된다. PCB의 구성요소를 파악한다면 하나의 CPU에서 어떻게 여러 개의 프로세스가 실행될 수 있는지 파악할 수 있을 것이다. 프로세스 상태 : CPU를 할당해도 되는지 결정하기 위해 필요하며..

CS/운영체제 2021.09.13

[운영체제] 스레드는 무엇일까?

먼저 프로세스에 대해서 공부를 했었다. 프로그램은 파일이 메모리에 올라가 있지 않고 디스크에 저장되어 있는 상태이며 프로그램을 실행시켰을 때 메모리에 올라가서 프로세스가 생성이 된다. 그렇다면 스레드는 무엇이고 어떻게 동작을 하는 것일까? 스레드가 생겨난 이유 스레드라는 개념이 생기기 전에는 프로그램이 시작되고 끝나기 전까지 하나의 프로세스를 사용하였다. 하지만 점점 프로세스가 복잡해졌고 하나의 프로세스로 프로그램을 실행시킬 수 없었다. 그렇다고 프로세스를 여러 개 사용할 수도 없다. 왜냐하면 운영체제는 안정적인 운영을 위해 프로세스에게 할당한 메모리 내에서만 활동할 수 있도록 하였기 때문이다. 즉 하나의 프로그램에 여러 개의 프로세스를 사용하더라도 프로세스끼리 정보가 공유되지 않기 때문에 오류가 발생한..

CS/운영체제 2021.09.10

[운영체제] 프로세스가 무엇일까?

프로세스의 개념 프로세스는 실행 중인 프로그램을 뜻한다. 그렇다면 프로그램은 무엇일까? 프로그램은 아직 실행하기 전 상태의 실행 파일들을 의미한다. 바탕 화면에 있는 각각의 파일들이 프로그램이 되며 더블 클릭을 했을 때 프로그램이 실행 된다. 이때 프로그램이 실행 되면 CPU 메모리를 점유하게 되고 프로세스가 진행되는 것이다. 그렇다면 프로세스를 구성하는 것이 무엇인지 알아보자. Code 영역 : 프로그램의 코드가 올라가고 프로그램을 실행 시켰을 때 실행 파일 내에 존재하는 명령어들이 올라가는 메모리 영역이다. Data 영역 : 전역 변수와 static 변수에 할당을 위한 메모리 영역이다. Heap 영역 : 개발자가 동적 할당할 때 필요한 메모리 영역이다. Stack 영역 : 함수 호출 및 함수의 인자와..

CS/운영체제 2021.08.31
728x90
반응형