2025/05/29 6

뮤텍스, 세마포어, 모니터

경쟁상태를 해결하는 대표적인 방법으로는 뮤텍스, 세마포어, 모니터 3가지가 있다.이들은 상호배제, 한정대기, 진행의 융통성의 조건을 만족시키며 경쟁상태를 해결한다.상호 배제(mutual exclusion) : 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 들어갈 수 없음한정 대기(bounded wating) : 특정 프로세스가 임계영역 진입을 요청한 후 해당 요청이 승인되기 전까지 다른 프로세스가 임계 영역에 진입하는 횟수를 제한하는 것을 말하며 이를 통해 특정 프로세스가 영원히 임계 영역에 들어가지 못하게 하는 것을 방지함.진행의 융통성(progress) : 만약 어떠한 프로세스도 임계영역을 사용하지 않는다면 임계영역 외부의 어떠한 프로세스도 들어갈 수 있으며 이 때 프로세스끼리 서로 방해하지..

CS/운영체제 2025.05.29

공유자원과 경쟁상태 그리고 임계영역

✅ 공유 자원 (Shared Resource)여러 스레드나 프로세스가 동시에 사용하려는 자원예: 전역 변수, 파일, 프린터, 메모리 공간 등한 번에 하나만 안전하게 사용해야 함🧠 비유: 한 식당에 포스기(POS기계)가 하나밖에 없다면,직원 여러 명이 그걸 동시에 쓰려고 하면 충돌이 날 수 있어 → 이게 공유 자원이야.✅ 경쟁 상태 (Race Condition)여러 스레드가 동시에 공유 자원에 접근해서, 실행 순서에 따라 결과가 달라지는 문제공유 자원을 제대로 통제하지 않으면 발생결과가 예측 불가, 버그 발생 가능성 ↑🧠 예시:변수 count = 0스레드 A: count++스레드 B: count++→ 동시에 실행되면 결과가 1이 될 수도 있고, 2가 될 수도 있어 → 이게 경쟁 상태야.✅ 임계 영역 (..

CS/운영체제 2025.05.29

멀티프로세싱과 멀티스레딩

✅ 멀티프로세싱 (Multiprocessing)하나의 컴퓨터 시스템에서 여러 개의 프로세스를 동시에 실행하는 방식각 프로세스는 독립된 메모리 공간과 자원을 가지고 실행됨CPU 코어가 여러 개인 환경에서 병렬 처리 가능예: 엑셀, 크롬, 카카오톡을 동시에 실행✅ 멀티스레딩 (Multithreading)하나의 프로세스 내에서 여러 스레드가 동시에 작업을 수행하는 방식모든 스레드는 메모리(Heap) 등 자원을 공유하나의 프로그램에서 동시에 여러 작업을 수행예: 게임에서 그래픽 렌더링 + 배경음악 + 사용자 입력 처리🧠 개념 요약구분멀티프로세싱 (Multiprocessing)멀티스레딩 (Multithreading)💡 정의여러 개의 프로세스를 동시에 실행하나의 프로세스 안에서 여러 스레드를 동시에 실행🧱 구..

CS/운영체제 2025.05.29

PCB와 컨텍스트 스위칭(context switching)

✅ PCB (Process Control Block, 프로세스 제어 블록)운영체제가 각 프로세스를 관리하기 위해 저장해 놓는 정보 묶음이야.하나의 프로세스는 하나의 PCB를 갖고 있어.운영체제가 이 PCB를 보고 어떤 프로세스인지 파악하고, 실행 시킬 수 있어.📌 PCB에 저장되는 주요 정보:항목설명프로세스 상태실행 중, 준비 상태, 대기 상태 등프로그램 카운터다음에 실행할 명령어 주소CPU 레지스터 값중단된 시점의 레지스터 정보메모리 정보프로세스에 할당된 메모리 위치프로세스 식별자(PID)고유한 번호스케줄링 정보우선순위, 스케줄링 큐 등 ✅ 컨텍스트 스위칭 (Context Switching)CPU가 현재 실행 중인 프로세스를 멈추고, 다른 프로세스로 전환할 때 발생하는 과정이야.이때 PCB가 아주 중..

CS/운영체제 2025.05.29

프로세스 메모리 구조

프로세스란?사람이 컴퓨터를 키고 리그 오브 레전드 라는 게임 실행파일을 실행하면 OS(운영체제)의 커널이 동작을 시작하드디스크에 저장된 프로그램을 메모리(RAM)에 적재한다 - (코드, 데이터, 스택, 힙 등 메모리 영역에 배치)OS(커널)가 해당 코드의 첫 명령어를 fetch(가져오기)를 실행하면 그 순간 프로그램이 실행되면서 프로세스로 변환한다즉 프로세스란 실행중인 프로그램이라고 생각하면 쉽다.그 후 여러 프로세스가 실행이 되면 스케줄러가 효율적으로 어떠한 프로세스를 실행할 지 우선순위를 결정하여 하나의 CPU가 컨텍스트 스위칭을 사용하여 동시성을 갖추게 할 수 있게 해준다.메모리 구조운영체제는 프로세스에 적절한 메모리를 할당하는데 다음 구조를 기반으로 할당한다.위에서부터 스택(stack), 힙(he..

CS/운영체제 2025.05.29

프로그램 컴파일 과정

컴파일이란프로그램은 컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 번역되어 실행될 수 있는 파일이 된 것을 의미한다. 소스 파일(코드) -> preprocessor(전처리과정) -> compiler -> assembler -> Linker(목적코드) -> 실행전처리소스코드의 주석제거, #include 등 헤더파일을 병합하고 매크로를 치환하는 과정컴파일러오류처리, 코드최적화 작업을 하여 어셈블리어로 변환한다.어셈블리어목적코드(object code)로 변환되는데 이때 확장자는 운영체제마다 다른게 변한다.링커프로그럄 내 있는 라이브러리 함수 등과 결합해 실행파일이 만들어집니다. 이는 .exe 확장자, .out이라는 확장자를 갖게 된다.* 요약하자면✅ 1. 전처리 (Preprocessing)대..

CS/운영체제 2025.05.29