반응형

**극꼼이네 GGTales** 307

[운영체제(OS)] 4-3) 스레드와 관련된 문제들 (Threading Issues)

1. Fork(), Exec() 시스템 콜 : fork(), exec()은 모두 한 프로세스가 다른 프로세스를 실행시키기 위해 사용됩니다. 둘 다 Process Control 영역의 시스템 콜입니다. * fork() : 새로운 프로세스를 위한 메모리를 할당하고, 메모리에 fork()를 호출한 프로세스를 전부 복사 -> 원래 프로세스는 원래의 본인의 작업을 실행하고, 생성된 프로세스는 시스템 콜한 다음 라인부터 실행. = 생성 * exec() : 새로 메모리를 할당하지 않고, exec()에 의해 호출된 프로세스만 메모리에 남게 됨. = 덮어씀 exec()을 호출할 때 원래의 프로세스가 사라져버리므로, 이럴 때 일반적으로 fork()가 필요합니다. 2. 취소(Cancellation) : 스레드가 끝나기 전에..

[운영체제(OS)] 4-2) 스레드 라이브러리, 암묵적 스레딩

: 프로그래머가 스레드를 생성하고 관리하기 위한 API. - 스레드 라이브러리를 구현하는 방법에는 두 가지가 있습니다. 1) 커널의 지원 없이 완전히 사용자 공간에 라이브러리 제공. 2) 운영체제에 의해 지원되는 커널 수준의 라이브러리를 구현. - 다수의 스레드를 생성하는 방법 1) 비동기 스레딩(asynchronous threading) : 부모가 자식 스레드를 생성한 후에 실행을 재개 -> 부모와 자식 스레드가 서로 독립적으로 병행하게 실행되는 스레딩 방식으로, 다중 스레드 서버에서 주로 사용합니다. 2) 동기 스레딩(synchronous threading) : 부모 스레드가 하나 이상의 자식 스레드를 생성하고 자식 스레드 모두가 종료할 때까지 기다렸다가 자신의 실행을 재개하는 스레딩 방식(상당한 양..

[운영체제(OS)] 4-1) 단일 스레드와 멀티 스레드

: CPU 활용의 기본 단위, 프로세스 내에서 프로그램 명령을 실행하는 기본 단위. - 스레드 구성 : 스레드 ID, Program Counter, Register 집합, 스택으로 구성. - 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, open files 등의 운영체제 자원을 공유. 1) 단일 스레드 : 프로세스가 제어 스레드를 1개만 가지고 있을 때. 1개의 레지스터, 1개의 스택. 장점 : 자원을 공용화 하지 않아서 공용 자원에 접근을 통제하지 않아도 됨. Context Switch 작업이 불필요합니다. 단점 : 다수개의 CPU 활용이 불가능합니다. 2) 멀티 스레드 : 프로세스가 제어 스레드를 여러개 가지고 있을 때(프로세스를 생성하는데에는 오래 걸리고 자원도 많이 사용해서, 오버헤드를..

[운영체제(OS)] 3-6) 클라이언트-서버 통신

- 소켓(socket) : 서버간의 communication을 하기 위한 Endpoint. 네트워크에서 통신하는 한 쌍의 프로세스들은 각각 하나의 소켓을 가지고 있어야 합니다. 소켓은 IP주소, Port 번호를 조합하여 식별합니다. - 소켓은 일반적으로 클라이언트-서버 구조를 사용합니다. 서버는 특정 포트를 listen하면서 클라이언트 요청을 기다립니다. 요청을 받으면 서버는 클라이언트 소켓으로부터 연결 요청을 수락하여 연결을 완성합니다. - Remote Procedure Call(RPC) : 네트워크로 연결된 서버 상의 프로시저(함수, 메소드 등)를 원격을 호출할 수 있는 기능입니다. 일반적으로 프로세스는 자신의 주소 공간 안에 존재하는 함수만을 호출하여 실행할 수 있는데, RPC를 이용하면 다른 주소..

[운영체제(OS)] 3-5) 프로세스 간 통신

: 프로세스들은 독립적이거나 협력적인데요, 협력 프로세스는 데이터공유를 포함하여 프로세스들에게 영향을 주거나 받습니다. 프로세스 간 통신(Inter Process Communication, IPC) 기법을 필요로 합니다. - 협력을 허용하는 환경을 제공하는 이유 : 정보 공유, 계산 가속화, 모듈성, 편의성 1) 메시지 전달 : 동일한 주소 공간을 공유하지 않고도 프로세스들이 통신을 하고, 그 동작을 동기화할 수 있도록 허용하는 기법입니다. send(message) / receive(message) 연산을 제공합니다.(message는 고정 길이일수도, 가변 길이일수도 있음) - 커널쪽에 message queue가 있습니다. - 통신 연결(communication link)을 통해 프로세스 간 메시지를 주..

[운영체제(OS)] 3-4) 프로세스 연산(생성, 종료)

: 프로세스는 실행되는 동안 여러 프로세스들을 생성합니다. 이를 각각 부모, 자식 프로세스라 부릅니다. - 부모 프로세스가 자식 프로세스를 생성할 때, 자식 프로세스는 부모가 가진 자원의 부분 집합만을 사용하도록 제한하거나, 운영체제에서 자원을 직접 얻습니다. - 부모 프로세스는 자식 프로세스와 동시에 구동되며, 자식 프로세스의 전부 또는 일부가 종료될 때까지 wait 상태값을 유지합니다. : 트리 구조를 가짐. pid(프로세스의 고유 값)는 랜덤으로 할당되는데, 시스템 부팅 시 실행되는 프로세스는 1로 고정. : 프로세스의 생성 흐름. 자식 프로세스를 만드는 것과 관련된 Linux의 시스템 콜 함수로는 fork, exec, wait, exit 등이 있습니다. 1) fork : 부모 프로세스와 동일한 내..

[운영체제(OS)] 3-3) 컨텍스트 스위치

: interrupt 종료 후 프로세스를 재개(= PCB에 저장해둔 프로세스의 Context를 불러옴)하는 작업. 컨텍스트 스위치가 일어나는 동안 시스템은 아무런 유용한 일을 못하기 때문에 컨텍스트 스위치에 소요한 시간은 순수한 오버헤드로 볼 수 있습니다. * interrupt : 운영체제가 CPU를 현재 프로세스에게서 빼앗아 커널 루틴을 실행할 수 있게 하고, 종료 후 본래 작업이던 프로세스를 재개. : P0 프로세스가 실행하고 있다가 inturrupt를 받음 -> PCB0에 저장 -> PCB1에서 P1프로세스를 불러와서 실행 -> PCB1에 저장하고 다시 PCB0에서 P0프로세스를 불러와 실행. 컨텍스트 스위치가 두번 발생.

[운영체제(OS)] 3-2) 프로세스 스케쥴링

- 스케쥴링의 목적 : 대기 시간을 최소화, 최대한 공평하게 메모리를 프로세스들에게 분배. - 스케쥴링 큐 종류 1) Job Queue : 프로세스가 시스템에 들어온 상태이며, 현재 시스템 내에 있는 모든 프로세스를 관리합니다. (메모리에 올라가있지 않은 프로세스도 포함) 2) Ready Queue : 준비 완료 상태에서 CPU에 할당받기를 기다리는 프로세스들. 여기 있는 프로세스들을 줄 세우는 방법으로 스케쥴링 알고리즘을 사용합니다. 3) Device Queue (I/O 대기 큐) : 특정 입출력 장치를 대기하는 프로세스들의 리스트. 디바이스 큐에 속한 프로세스는 blocked상태가 되고, 장치 컨트롤러가 interrupt를 발생시키면 준비 상태로 바뀌어 Ready Queue로 이동합니다. : CPU에..

[운영체제(OS)] 3-1) 프로세스의 개념과 PCB(Process Control Block)

: 실행중인 프로그램. 디스크에 저장된 수동적 파일(실행 파일)이 메모리에 적재될 때 프로세스가 됩니다. : 메모리 상의 특정 위치를 할당받고, 내부적으로 메모리를 동적으로 조절합니다. 1) 텍스트 세션 : 실제 실행 코드가 담겨 있으며, 고정된 메모리 영역을 할당받습니다. * 텍스트 외의 세션은 고정되어 있지 않음(항상 같은 주소값을 가지진 않음). 2) 스택 세션 : 함수 호출 시 임시 데이터 저장 - 함수 매개 변수, 반환 주소, 지역 변수 등 3) 힙 세션 : 프로그램 실행 시 동적으로 할당되는 메모리 4) 데이터 세션 : 전역 변수 - New : 프로세스가 생성 중 - Running : 내부적으로 명령어들이 실행 중 - Waiting : 사건(IO)들이 일어나기를 대기 - Ready : 프로세스..

[운영체제(OS)] 2-2) 커널(Kernel)과 시스템 콜(System Call)

: 항상 메모리에 올라가 있는 운영체제의 핵심 부분. 하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하고, 컴퓨터 리소스를 관리. * 커널은 사용자와의 상호작용은 지원하지 않음. - 커널의 가장 큰 목표는 하드웨어 자원과 추상화 자원을 관리하는 것. - 커널이 추상화하여 관리하는 물리적 자원들과, 이를 추상화한 자원을 칭하는 용어 : CPU - Task or Process, 메모리 - Page or Segment, 디스크 - File, 네트워크 - Socket 커널의 역할 1) Task Management : 물리적 자원인 CPU를 추상적 자원인 Task로 제공 2) Memory Management : 물리적 자원인 메모리를 추상적 자원인 Page 또는 Segement로 제공 3) File Syste..

반응형