운영체제 9

운영체제에서의 동기화와 공유 자원 이해하기

운영체제는 여러 프로세스를 동시에 실행할 수 있도록 설계되어 있습니다. 이러한 병행 실행 상황에서 프로세스들은 서로 협력하며 자원을 공유하고 영향을 주고받게 됩니다. 이때 자원의 일관성을 유지하는 것이 핵심입니다. 동기화의 의미동기화는 여러 프로세스가 공동의 목적을 위해 동시에 작업을 수행할 때 발생합니다. 예를 들어 워드 프로세서 프로그램에서는 맞춤법 검사와 입력 내용을 출력하는 작업이 동시에 실행되지만, 결과가 정확히 나오기 위해서는 서로의 실행 순서가 맞아야 합니다. 동기화의 정의프로세스 동기화란 간단히 말해 수행 시기를 조율하는 것입니다.실행 순서 제어: 올바른 순서대로 실행되도록 보장상호 배제: 동시에 접근할 수 없는 자원에 대해 하나의 프로세스만 접근하도록 제한 동기화 필요성 – Bank Ac..

운영체제 2025.06.19

CPU 스케줄링 알고리즘 총정리

운영체제에서 프로세스 스케줄링은 시스템의 효율성을 좌우하는 핵심 기능입니다. 이번 포스팅에서는 7가지 대표적인 CPU 스케줄링 알고리즘을 이미지와 함께 정리해봅니다. 선입선처리 스케줄링 (FCFS)FCFS (First Come First Served)준비 큐에 먼저 들어온 순서대로 CPU 할당비선점형 스케줄링단점: 실행 시간이 긴 프로세스가 앞에 있을 경우, 뒤에 있는 프로세스들의 대기 시간이 길어지는 호위 효과(Convoy Effect) 발생위 그림에서 실행 시간이 긴 프로세스 A가 앞에 있어, B와 C는 오랜 시간을 기다리게 됩니다.👉 평균 대기 시간: 13ms 최단 작업 우선 스케줄링 (SJF)SJF (Shortest Job First)CPU 사용 시간이 짧은 프로세스를 먼저 실행FCFS의 ..

운영체제 2025.06.19

프로세스 우선순위와 스케줄링 완전 정복!

운영체제의 핵심 개념 중 하나인 프로세스 스케줄링. 오늘은 프로세스 우선순위와 스케줄링 큐, 선점형/비선점형 스케줄링까지 한 번에 정리해보겠습니다. CPU 스케줄링에서의 우선순위는?입출력 작업이 많은 프로세스, 즉 입출력 집중 프로세스는 CPU를 짧게 사용하고 기다리는 시간이 많습니다. 반면, CPU 작업이 많은 CPU 집중 프로세스는 CPU를 오래 점유합니다.운영체제는 입출력 집중 프로세스에 더 높은 우선순위를 부여하여, CPU를 효율적으로 사용할 수 있도록 설계합니다. 스케줄링 큐란?운영체제는 다양한 장치를 쓰고 싶어 하는 프로세스들을 위해 스케줄링 큐를 만듭니다.CPU를 쓰고 싶은 프로세스하드디스크를 쓰고 싶은 프로세스프린터를 쓰고 싶은 프로세스각 장치마다 큐가 있으며, 프로세스들은 자신이 필요한..

운영체제 2025.06.19

프로세스 vs 스레드 - 개념과 차이

멀티태스킹 환경에서 CPU는 여러 작업을 동시에 처리할 수 있도록 프로세스와 스레드를 활용합니다. 이번 포스트에서는 멀티 프로세스와 멀티 스레드의 개념 차이, 구조, 메모리 사용 방식 등을 이미지와 함께 정리해보겠습니다. 스레드의 개념과 예시스레드는 프로세스를 구성하는 실행 흐름의 단위입니다.하나의 프로세스는 여러 개의 스레드를 동시에 실행할 수 있으며, 이들 스레드는 같은 메모리 공간을 공유합니다.예: 하나의 웹 브라우저 프로세스 안에, 입력, 검색, 화면 출력을 각각 담당하는 스레드들이 존재. 멀티 프로세스 vs 멀티 스레드 비교 구조스레드는 프로세스의 자원을 공유합니다: 코드, 데이터, 힙, 파일 등.하지만 각 스레드는 자신만의 레지스터, 스택, 프로그램 카운터를 가집니다.즉, 실행 흐름은 독립적이..

운영체제 2025.06.18

프로세스 상태와 계층 구조의 이해

운영체제에서 프로세스는 여러 상태를 거치며 실행되고, 이들 사이의 전이는 시스템의 효율적인 자원 관리를 위해 매우 중요합니다. 또한 프로세스 간에는 계층 구조가 존재하여 부모-자식 관계로 연결되기도 합니다. 아래 이미지와 함께 개념을 정리해 보겠습니다. 프로세스 상태 전이이 그림은 프로세스의 전형적인 상태 전이 모델을 나타냅니다. 총 다섯 가지 상태로 구성됩니다.생성 상태: 프로세스가 생성되어 메모리에 적재되고 PCB(Process Control Block)를 부여받은 상태입니다.준비 상태: 실행을 위해 준비가 끝난 상태이며, CPU 할당을 기다립니다.실행 상태: CPU를 할당받아 명령어를 수행 중인 상태입니다.대기 상태: 입출력 작업 등 외부 자원을 기다리는 상태입니다.종료 상태: 프로세스 실행이 끝나..

운영체제 2025.06.18

운영체제의 핵심, 프로세스와 PCB, 문맥 교환까지

운영체제(OS)는 컴퓨터 자원을 효율적으로 관리하고, 사용자 프로그램들이 원활히 실행되도록 돕는 중요한 소프트웨어입니다. 이번 글에서는 운영체제가 관리하는 핵심 단위인 **프로세스(Process)**와 이들을 효율적으로 관리하기 위한 **PCB(Process Control Block)**에 대해 그림과 함께 이해해보겠습니다. 실행 중인 프로그램", 프로세스란?위 그림처럼 사용자가 워드, 웹 브라우저, 메모장 등을 실행하면 이들은 모두 메모리에 올라가 실행 중인 상태, 즉 프로세스가 됩니다.프로세스란 **"실행 중인 프로그램"**을 의미하며, 실행 파일이 메모리에 적재되고 CPU의 자원을 받아 동작하는 하나의 작업 단위입니다. 프로세스 직접 확인하기 - 포그라운드와 백그라운드프로세스는 두 가지 방식으로 ..

운영체제 2025.06.18

운영체제 핵심 개념: 커널, 시스템 콜, 그리고 이중 모드

우리의 응용 프로그램이 하드웨어에 직접 접근하지 못하도록 제한하고, 안정성과 보안을 유지하면서 자원에 접근하도록 돕는 존재가 있습니다. 바로 운영체제, 그리고 그 핵심인 커널과 시스템 콜입니다. 아래 그림을 따라가며 개념을 정리해봅시다. 응용 프로그램과 운영체제는 어떻게 연결될까?우리가 개발한 응용 프로그램은 파일 저장, 메모리 할당, 네트워크 통신 등 다양한 작업을 수행해야 합니다. 이 과정에서 직접 하드웨어에 접근하는 대신, 운영체제의 서비스를 요청합니다. 이때 사용하는 것이 바로 **시스템 콜(system call)**입니다.✅ 시스템 콜 = 운영체제에게 자원 요청을 하기 위한 공식적인 호출 방식 2. 커널이란 무엇인가?운영체제 내부에서도 자원 관리를 실제로 담당하는 핵심 부분을 **커널(ke..

운영체제 2025.06.18

실행은 운영체제가 한다 – 실행파일의 뒷이야기

컴퓨터는 전기만 들어오면 자동으로 돌아갈까?컴퓨터 부품들은 전기만 넣는다고 혼자 알아서 움직이는 마법 같은 존재가 아닙니다.이들을 제대로 작동시키기 위해서는 운영체제라는 관리자, 즉 중재자가 필요합니다.운영체제는 각 프로그램과 하드웨어 자원 사이를 중재하고 관리하는 시스템 소프트웨어입니다. 운영체제는 모든 것을 통제한다예를 들어, 새로운 프로그램(게임)을 실행할 때 운영체제는 이렇게 물어봅니다.“이걸 실행하려면 어디에 적재해야 하지?”“어떤 메모리 주소를 써야 하지?”운영체제는 메모리를 직접 관리하며, 어떤 프로그램이 어디에 로드될지를 결정합니다.실행이 끝나면 자원을 회수하기도 하죠. CPU까지 관리하는 운영체제운영체제는 단지 메모리만이 아니라 CPU 자원도 배분합니다.누가 먼저, 얼마나 오래 CPU..

운영체제 2025.06.09

실행 파일은 왜 만들어질까? – 운영체제에게 부탁하려고!

프로그래밍을 배우다 보면 이런 흐름을 자연스럽게 익히게 됩니다.1. C 코드 작성 → 2. 컴파일 → 3. 실행 파일 생성 → 4. 실행그런데 한 번쯤은 이런 의문이 들 수 있어요."굳이 실행파일을 왜 만들지?""바로 실행하면 안 되나?"오늘은 이 질문에 대한 아주 본질적인 답을 이야기해보려 합니다. 컴퓨터는 뭘 실행해야 할까?운영체제(OS)는 컴퓨터의 모든 자원(CPU, 메모리, 저장장치 등)을 관리합니다.그리고 운영체제가 일을 처리하는 방식은 아주 명확해요:❗ "운영체제는 기계어(바이너리)로 된 실행파일만 실행할 수 있습니다."즉, 사람이 쓴 printf("hello"); 같은 고수준 언어는 운영체제가 이해하지 못합니다.그래서 우리는 운영체제가 이해할 수 있는 형식인 '실행 파일'을 만들어야 ..

운영체제 2025.06.09