Operating System Concepts 10th, 4.6장을 요약한 내용입니다. Fork() 및 Exec() 시스템 콜 The fork() and exec() System Calls 다중 스레드 프로그램에서는 fork()와 exec()의 의미가 달라질 수 있다. 만일 한 프로그램의 스레드가 fork()를 호출하면 아래와 같은 고려가 필요하다. 새로운 프로세스는 모든 스레드를 복제해야 하는가 - 모든 스레드를 복사하는 것 한 개의 스레드만 가지는 프로세스여야 하는가 - fork()를 호출한 스레드만 복제하는 것 어떤 스레드가 exec() 시스템 콜을 부르면 exec()의 매개변수로 지정된 프로그램이 모든 스레드를 포함한 전체 프로세스를 대체시킨다. 두 버전의 fork() 중 어느 쪽을 택할 것인지는..
OperatingSystem
Operating System Concepts 10th, 4.5장을 요약한 내용입니다. 다중 코어 처리의 지속적 성장에 따라 수천 개의 스레드를 가진 응용 프로그램이 등장하게 되면서 병행 및 병렬 응용 프로그램의 설계를 도와주는 한 가지 방법은 스레딩의 생성과 관리 책임을 개발자로부터 컴파일러와 실행시간 라이브러리에게 넘겨주는 것이다. 이러한 방법을 암묵적 스레딩이라고 한다. 암묵적 스레딩은 일반적으로 응용 프로그램 개발자가 병렬로 실행할 수 있는 스레드가 아닌 작업을 식별해야 한다. 작업은 일반적으로 함수로 작성되며, 런타임 라이브러리는 일반적으로 다대다 모델을 사용하여 별도의 스레드에 매핑된다. 개발자는 병렬 작업만 식별하면 되고 라이브러리는 스레드 생성 및 관리에 대한 특정 세부 사항을 결정한다는 ..
Operating System Concepts 10th, 4.3장을 요약한 내용입니다. 1. 사용자 스레드 & 커널 스레드 User Threads & Kernel Threads 스레드를 위한 지원은 사용자 스레드(user threads)를 위해서는 사용자 수준에서, 커널 스레드(kernel threads)를 위해서는 커널 수준에서 제공된다. 사용자 스레드는 커널 위에서 지원되며 커널의 지원 없이 관리된다. 커널 스레드는 운영체제에 의해 직접 지원되고 관리된다. Windows, Linux, macOS를 포함한 거의 모든 현대 운영체제들은 커널 스레드를 지원한다. 사용자 스레드와 커널 스레드는 어떤 연관 관계가 존재해야 한다. 이 연관 관계를 확립하는 일반적인 세 가지 방법은 다대일, 일대일, 다대다 모델이..
Operating System Concepts 10th, 4.2장을 요약한 내용입니다. 컴퓨터 설계의 역사는 좋은 컴퓨터 성능에 대한 요구에 부응하며, 단일 CPU 시스템에서 다중 CPU 시스템으로 발전했다. 이후 시스템 설계 추세는 단일 컴퓨팅 칩에 여러 컴퓨팅 코어를 배치하는 것이다. 이러한 시스템을 다중 코어라고 하며 다중 스레드 프로그래밍은 이러한 여러 컴퓨팅 코어를 보다 효율적으로 사용하고 병행성을 향상하는 기법을 제공한다. 단일 코어와 다중 코어의 차이점 단일 코어 단일 컴퓨팅 코어가 있는 시스템에서는 단지 처리 코어가 한 번에 하나의 스레드만 실행할 수 있기 때문에 병행성은 시간이 지남에 따라 스레드 실행이 인터리브된다. (인터리브 interleave: 어떤 프로그램의 일부분을 다른 프로그램..
Operating System Concepts 10th, 4.1장을 요약한 내용입니다. 스레드는 CPU 이용의 기본 단위이다. 스레드는 스레드 ID, 프로그램 카운터(PC), 레지스터 집합 그리고 스택으로 구성된다. 스레드는 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 그리고 열린 파일이나 신호와 같은 운영체제 자원들을 공유한다. 프로세스가 다수의 제어 스레드를 가진다면, 프로세스는 동시에 하나 이상의 작업을 수행할 수 있다. 이에 단일 스레드 프로세스와 다중 프로세스가 존재한다. 1. 동기 Motivation 현대의 컴퓨터와 모바일 기기에서 작동하는 거의 모든 소프트웨어 응용 프로그램들은 다중 스레드를 이용한다. 하나의 응용 프로그램은 몇 개의 실행 흐름을 가진 독립적인 프로세스로 구현된다..
Operating System Concepts 10th, 3.8장을 요약한 내용입니다. 클라이언트 서버에서 사용할 수 있는 통신 전략은 크게 두 가지가 존재한다. 이 두가지는 소켓(socket), 원격 프로시저 호출(RPC)이다. 1. 소켓 Socket 소켓은 통신의 극점(endpoint)을 뜻한다. 두 프로세스가 네트워크상에서 통신을 하려면 양 프로세스마다 하나씩, 총 두개의 소켓이 필요하다. 각 소켓은 IP주소와 포트 번호 두 가지를 접합(concatenate)해서 구별한다. 일반적으로 소켓은 클라이언트-서버 구조를 사용한다. 서버는 지정된 포트에 클라이언트 요청 메세지가 도착하기를 기다리게 된다. 요청이 수신되면 서버는 클라이언트 소켓으로부터 연결 요청을 수락함으로써 연결이 완성된다. Telnet,..