OS5 OS | 멀티 프로세스 대신 멀티 스레드를 사용하는 이유 쉽게 설명하면, 프로그램을 여러 개 키는 것보다 하나의 프로그램 안에서 여러 작업을 해결하는 것이다. 자원의 효율성 증대 멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우, 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다. 프로세스 간의 Context Switching 시 단순히 CPU 레지스터 교체 뿐만 아니라 RAM과 CPU 사이의 캐시 메모리에 대한 데이터까지 초기화되므로 오버헤드가 크기 때문 스레드는 프로세스 내의 메모리를 공유하기 때문에 독립적인 프로세스와 달리 스레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 줄어들게 된다. 처리 비용 감소 및 응답 시간 단축 또한 프로세스 간의 통신(IPC)보다 스레드 간의 통신의 비용이 적.. 2023. 7. 3. OS | 프로세스와 스레드의 차이 📌 프로그램(Program) 이란 사전적 의미: 어떤 작업을 위해 실행할 수 있는 파일 📌 프로세스(Process) 란 사전적 의미: 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위 즉, 동적인 개념으로는 실행된 프로그램을 의미한다. 할당받는 시스템 자원의 예 CPU 시간 운영되기 위해 필요한 주소 공간 Code, Data, Stack, Heap의 구조로 되어 있는 독립된 메모리 영역 특징 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 각 프로세스는 별도의 주소.. 2023. 7. 3. 운영체제 공룡책 : Ch6. Synchronization Tools | 동기화 도구들 📌 들어가며 협력적 프로세스 cooperating process는 시스템 내에서 실행 중인 다른 프로세스의 실행에 영향을 주거나 영향을 받는 프로세스이다. 협력적 프로세스는 논리 주소 공간(즉, 코드 및 데이터)을 직접 공유하거나 공유 메모리 또는 메시지 전달을 통해서만 데이터를 공유할 수 있는데, 공유 데이터를 동시에 접근하면 데이터의 일관성을 망칠 수 있다. 이번 단원에서는 논리 주소 공간을 공유하는 협력적 프로세스가 질서있는 실행을 통해 데이터의 일관성을 유지하는 다양한 메커니즘에 대해 다루어보자. 📚 6.1 배경 Background 프로세스는 concurrent하고 parallel하게 실행될 수 있다. 즉, CPU 스케줄러가 프로세스 사이에서 빠르게 오가며 각 프로세스를 실행하며 각 프로세스를 실.. 2023. 3. 22. 운영체제 공룡책 : Ch4. Threads & Concurrency | 스레드와 병행성 📌 들어가며 현대 운영체제는 한 프로세스가 다중 스레드를 포함하는 특성을 제공한다. 다중 CPU를 제공하는 다중 코어 시스템에서 스레드 사용을 통한 병렬 처리의 기회를 식별하는 것이 중요해지는 시점에서, 이번 단원을 통해 다중 스레드 컴퓨터 시스템과 관련된 내용을 알아보고, 개발자로서 병렬 처리 기회를 식별하고 언어 제공 기능 및 API 프레임워크가 스레드 생성 및 관리 세부 정보를 관리할 수 있도록 하는데 초점을 맞추고자 한다. 📚 4.1 개요 스레드 Thread란 CPU 연산의 가장 작은 단위이다. 스레드는 Thread ID, program counter (PC), register set, stack으로 구성된다. 같은 프로세스 안에 있는 스레드들은 code 섹션, data 섹션, 그리고 files와.. 2023. 3. 15. 운영체제 공룡책 : Ch2. Operating System Structures | 운영체제 구조 📌 들어가며 운영체제를 살펴보기 위한 몇가지 관점이 있다. 1. 운영체제가 제공하는 서비스에 초점을 맞춘다. 2. 운영체제가 사용자와 프로그래머에게 제공하는 인터페이스에 초점을 맞춘다. 3. 시스템의 구성요소와 그들의 상호 연결에 초점을 맞춘다. 이 세가지 측면을 기준으로 사용자, 프로그래머, 운영체제 설계자의 관점에서 모두 살펴보자. 📚 2.1 운영체제 서비스 운영체제는 프로그램 실행 환경을 제공한다. 즉, 프로그램과 그 프로그램의 사용자에게 특정 서비스를 제공한다. 이러한 서비스는 프로그래머가 프로그래밍 작업을 더 쉽게 수행할 수 있도록 한다. [ 사용자에게 도움을 주는 것을 목적으로 하는 서비스 ] ✔️ 사용자 인터페이스(user interface) * 거의 모든 OS가 제공하며, 여러 형태로 제공.. 2023. 3. 8. 이전 1 다음