CS/운영체제8 [OS] Program -> Process 프로그램이 실제로 실행되기 위해서는 프로세스로 변환되어야 하는데, 이는 프로그램이 단순히 저장 장치에 저장된 코드와 데이터의 정적인 형태에서 벗어나, 운영 체제가 관리할 수 있는 동적인 실행 단위로 활성화되어야 하기 때문이다. 이 과정을 자세히 살펴보면 다음과 같다. [프로그램 vs 프로세스]프로그램(Program): 디스크와 같은 저장 매체에 저장된 실행 가능한 파일로, 코드와 데이터의 정적인 형태를 가지며, 실행되지 않는 상태이다.프로세스(Process): 실행 중인 프로그램으로, 운영 체제가 메모리에 할당하고 실행을 관리하는 동적인 상태이다. 프로세스는 메모리, 실행 상태, 프로세스 ID 등 실행에 필요한 여러 자원과 정보를 포함한다. [프로세스 생성 과정]1. 프로그램의 로딩컴파일 → 어셈블 → .. 2024. 7. 1. [OS] Deadlock TerminologyDeadlock은 두 개 이상의 프로세스가 서로의 자원을 필요로 하면서 상대방의 작업 완료를 무한정 기다리는 현상이다. 이 상황에서 각 프로세스는 상대방이 필요로 하는 특정 이벤트를 제공할 수 있는데, 모든 관련 프로세스가 서로의 이벤트를 기다리면서 어느 쪽도 진행할 수 없게 되어 결국 모두 정지하게 된다.Deadlock의 필요조건에는 4가지가 있다.상호 배제 (Mutual Exclusion): 요구하는 자원이 다른 프로세스에 의해 사용 중일 경우, 해당 자원이 방출될 때까지 기다려야 한다.보유 대기 (Hold-and-Wait): 프로세스가 최소 하나 이상의 자원을 보유한 상태에서 추가 자원을 획득하기 위해 대기할 수 있다.비선점 (No Preemption): 다른 프로세스나 운영체제.. 2024. 7. 1. [OS] CPU Scheduling TerminologyCPU Scheduling은 운영체제가 시스템의 여러 프로세스들 사이에서 CPU 자원을 효율적으로 분배하기 위해 사용하는 메커니즘이다. 이는 여러 프로세스가 동시에 실행되고자 할 때, 어떤 프로세스가 CPU를 사용할지를 결정하는 과정이다. 왜 필요한가? (Policy) 실행 중인 프로세스는 CPU burst와 I/O burst를 무한히 반복한다. I/O burst로 이동할 때에는 context switch한 후 이동하는데, I/O burst가 얼마나 길어질지 모르기 때문이다. Context switch가 발생하기 이전에 운영체제는 미리 scheduler를 통해 ready queue에 있는 프로세스 중에서 다음에 실행할 프로세스를 선택한다. 어떤 기준으로 결정된 프로세스를 얼마나 길게 .. 2024. 7. 1. [OS] Synchronization TerminologySynchronization = 동기화 (≠ 병렬): 멀티스레드 환경에서 공유 데이터에 접근할 때 발생하는 문제를 해결하기 위한 메커니즘으로, atomic (indivisible) operation을 사용하여 쓰레드 간의 협력을 보장한다.왜 필요한가? (Policy)OS의 최종 목적은 Multiprogramming이다. 이를 통해 하드웨어 리소스를 최대한 효율적으로 사용함으로써 사용자가 무한대의 자원을 사용하고 있다고 느끼게끔 돕는다. 그러면 더욱이 처리 속도를 높이기 위해 동시에 여러 작업을 실행할 수 있도록 작업이 완료되기 전에 다른 작업을 수행할 수 있도록 비동기 처리하여야하는게 아닐까? 생각이 든다. 아주 타당한 생각이다. 다만, 동기화를 수행해야 하는 특수한 상황이 존재한다.. 2024. 7. 1. 이전 1 2 다음