개발자 공부하기/운영체제 7

[운영체제] 스레드의 개념 정리하기

지금까지는 1. 프로세스의 개념과 2. 프로세스 내에서 메모리 구조와, 3. 프로세스 간에는 어떻게 통신할 수 있는지, 4. CPU에 어떤 프로세스를 할당할지를 운영체제가 어떻게 결정하고 스케줄링하는지 등등을 공부했다. 공부했던 내용이 기억나지 않을 땐, 리마인드를 위해 포스팅 다시 읽기! [운영체제] 프로세스 개념 정복하기 [운영체제] 프로세스 생성과 종료 / 요약 정리 [운영체제] 프로세스 스케줄링 개념 정리 스레드 (Thread) : 바늘질할 때 쓰는 실을 뜻함 프로세스 내에서 실행되는 프로그램 코드의 흐름을 말한다. 하나의 프로세스 내에는 반드시 하나 이상의 스레드가 존재한다. 각 스레드는 스레드ID, 프로그램 카운터(PC), 레지스터 집합, 스택을 독립적으로 소유한다. 같은 프로세스 내에 스레드..

[운영체제] IPC, 프로세스 간 통신 방법

프로세스 간 통신 (Interprocess Communication, IPC) 컴퓨터 시스템에서 프로그램은 혼자 독자적으로 수행할 수도 있지만 프로그램들 사이에 정보를 교환함으로서 계산 속도를 증가시키거나 편의성을 향상시킬 수 있다. 각 프로세스는 자신의 독립적인 메모리 공간을 가지고 다른 프로세스들에 의해 침범당하지 않도록 보호하고 있기 때문에 프로세스 간 통신하기 위해서는 별도의 메커니즘이 필요하다. 기본적인 프로세스 개념과 CPU 스케줄링이 막연하게 느껴질때, 아래 포스팅을 보며 다시 복습하자. [운영체제] 프로세스 개념 정복하기 [운영체제] 프로세스 생성과 종료 / 요약 정리 [운영체제] 프로세스 스케줄링 개념 정리 [운영체제] 프로세스 스케줄링 알고리즘 정리 1. 공유 메모리 (shared me..

[운영체제] 프로세스 스케줄링 알고리즘 정리

프로세스의 개념과 스케줄링에 관한 기본기가 부족하다면, 아래 포스팅 먼저 복습하고 오자. [운영체제] 프로세스 개념 정복하기 [운영체제] 프로세스 생성과 종료 / 요약 정리 [운영체제] 프로세스 스케줄링 개념 정리 프로세스 스케줄링 알고리즘 1. FCFS (First-Come, First-Served), 선입 선처리 Ready queue를 FIFO로 구현하여 들어온 순서대로 CPU를 할당한다. 구현이 제일 간단하고, 이해하기 쉽다. 비선점 스케줄링으로 Ready queue에 있는 프로세스 입장에서는 평균 대기시간이 길어질 수 있다. * 비선점 스케줄링 : 현재 실행 중인 프로세스가 자발적으로 CPU 사용을 중단하는 경우에만 CPU 스케줄링을 수행하는 방법 * 선점 스케줄링 : 운영체제의 판단에 따라 현재..

[운영체제] 프로세스 스케줄링 개념 정리

프로세스 스케줄링 = CPU 스케줄링 운영체제가 수행해야할 역할 중 가장 핵심적인 역할이다. 각각의 운영체제는 자기만의 강점이 될 수 있는 스케줄링 알고리즘을 가지고 있다. 스케줄링 큐 (queue) 운영체제가 이해하는 프로세스는 PCB이기 때문에, 스케줄링 큐는 PCB의 링크드 리스트로 관리되고 있다. 여기까지 이해가 되지 않는다면, 프로세스에 대한 기본적인 개념을 다지자. [운영체제] 프로세스의 개념 정복하기 [운영체제] 프로세스의 생성과 종료 / 요약 정리 1. Job queue : 시스템 안에 존재하는 프로세스들 2. Ready queue : 메모리 상 존재하며 실행 준비가 되어 있는 프로세스들 3. Device queue : 입출력 장치의 사용을 기다리는 프로세스들 위 그림처럼 프로세스들은 스케..

[Swift] Process 클래스로 다른 Application 실행 / 프로세스 제어하기

프로세스 제어를 위한 시스템 API지난번 프로세스 제어를 위한 시스템 API 내용을 먼저 정리하자. 프로세스 관련 지식이 부족하다면, [운영체제] 프로세스의 개념 정복하기 [운영체제] 프로세스의 생성과 종료 / 요약 정리 1. fork()부모 프로세스에서 호출 되면, 자식 프로세스는 독립적인 메모리 공간에 부모와 동일한 내용이 복사된다.부모의 PCB 내용까지 복제되어 자식 프로세스는 fork() 함수부터 다시 수행된다.때문에 fork()를 부모 프로세스에서 호출하면 return을 부모에게서 한번, 자식에게서 한번이렇게 2번 받게 된다는 것이 중요하다. fork()의 return부모 프로세스새로 생성된 자식 프로세스의 PID자식 프로세스0시스템 호출 실 패 시-1 2. wait()부모 프로세스에서 호출 시..

[운영체제] 프로세스 생성과 종료 / 요약 정리

프로세스 생성 (Creation)프로세스를 생성하기 위한 복잡한 절차는 커널안에 코드로 구현되어 있다.하지만 프로세스 생성 요청은 사용자나 다른 프로그램이 시스템 API를 호출해야 가능하다. 1. 프로세스 ID (Process ID)사용자나 현재 실행중인 어떤 프로세스에서 생성을 위한 시스템 호출을 요청하면새로운 프로세스가 만들어지고, 고유 식별자인 프로세스 ID를 부여받는다. 2. 새 프로세스가 사용할 자원새로운 프로세스는 운영체제로부터 직접 새로운 PCB와 주소 공간을 할당 받는다.부모 프로세스로부터 Parameter로 전달 받을 수도 있다. (예를 들면, main() 의 arguments) 3. 프로세스 트리 (Process Tree)생성을 요청한 프로세스와 새로 생성된 프로세스는 부모와 자식 관계..

[운영체제] 프로세스의 개념 정복하기

프로세스란? 메모리에 적재되어 CPU에서 실행중인 프로그램을 말한다. * CPU (Central Processing Unit) : 컴퓨터에서 기억, 해석, 연산, 제어라는 4대 기능을 종합하는 중앙처리장치 프로세스의 구성 요소 1. 컴파일된 프로그램 코드 텍스트 섹션에 저장된다. 2. 프로그램 카운터 (PC) 다음에 실행될 명령어의 주소를 가지고 있어 실행될 기계어 코드의 위치를 저장한다. 즉, 다음에 실행될 명령어 포인터라고 할 수 있다. 3. CPU 레지스터 내용 4. 프로세스 Stack 함수에서 사용되는 데이터 정보를 저장한다. 즉, 함수 매개변수(Parameter), 함수 내부에서 사용되는 지역변수, 복귀 주소 (return addresss)가 저장된다. 함수 호출이 완료되면 메모리 해제된다. 5..