프로세스와 스레드는 운영체제에서 작업을 관리하는 기본 단위로, 각각 다른 특성과 역할을 가지고 있다.프로세스(Process)프로세스는 컴퓨터에서 실행 중인 프로그램의 인스턴스다. 운영체제로부터 자원을 할당받은 작업의 단위로 정의되며, 각 프로세스는 독립적인 메모리 공간을 가지고 있고, 다른 프로세스와 메모리를 직접적으로 공유하지 않는다.프로세스의 특징:독립된 메모리 공간(Code, Data, Stack, Heap)을 할당받음다른 프로세스의 메모리에 직접 접근할 수 없음프로세스 간 통신(IPC)을 위해 파이프, 소켓, 공유 메모리 등의 방법이 필요함새로운 프로세스 생성 시 운영체제가 자원을 새로 할당하므로 오버헤드가 큼예시:크롬의 탭 하나하나가 독립된 프로세스로 실행되어, 하나의 탭이 오류를 일으켜도 전체..
이전 포스팅에서는 세마포어와 조건 변수에 대한 수정을 진행했다. 이번 포스팅에서는 우선순위 기부기능을 구현하는 것을 목표로 한다.2025.05.12 - [분류 전체보기] - [pintos] Week1: Priority Scheduling - Part.2 [pintos] Week1: Priority Scheduling - Part.2이 전 포스팅에서는 우선순위에 따라 선점을 하는 기능을 구현했다. 이번 포스팅에서는 세마포어, 조건 변수에 따른 Lock 기능을 구현해 보겠다.2025.05.12 - [크래프톤 정글] - [pintos] Week1: Priority Schewww.gowoong.com구현 요구사항 설명의존관계 역전우선순위가 높은 스레드가 우선순위가 낮은 스레드를 기다리는 상황이다.2025.05...
이 전 포스팅에서는 우선순위에 따라 선점을 하는 기능을 구현했다. 이번 포스팅에서는 세마포어, 조건 변수에 따른 Lock 기능을 구현해 보겠다.2025.05.12 - [크래프톤 정글] - [pintos] Week1: Priority Scheduling - Part.1 [pintos] Week1: Priority Scheduling - Part.1이전 포스팅인 Alarm Clock의 경우 pintos를 어떻게 접근해야 하는가? 그런 느낌이 들었다면 Priority Scheduling의 경우 복잡하고 어려웠다. 그리고 다시 한번 느끼게 된 건 문서를 잘 읽고 개념을 잘 잡고www.gowoong.com구현 요구사항 설명잠금(또는 조건 변수)을 기다리는 스레드 집합에서 스레드의 우선순위에 따라 대기 중인 스레드..
이전 포스팅인 Alarm Clock의 경우 pintos를 어떻게 접근해야 하는가? 그런 느낌이 들었다면 Priority Scheduling의 경우 복잡하고 어려웠다. 그리고 다시 한번 느끼게 된 건 문서를 잘 읽고 개념을 잘 잡고 진행하자였다.구현 요구사항 설명pintos는 FIFO(First In First Out)으로 스케줄링을 진행한다.pintos를 우선순위에 따라 스케줄링을 진행하도록 수정하라ready list를 스레드 우선순위에 따라 정렬하라동기화 기본 요소(세마포어, 조건 변수)에 대한 대기 목록을 정렬한다.선점기능을 구현하라선점 지점: 스레드가 준비 목록에 추가될 때(타이머 인터럽트가 호출될 때마다가 아님).구현 목표ready list에 새로 추가된 thread의 우선순위가 현재 CPU를 점..
우선순위 역전(Priority Inversion)은 낮은 우선순위의 스레드가 높은 우선순위의 스레드보다 먼저 CPU를 점유하거나, 높은 우선순위 스레드의 실행을 지연시키는 현상을 의미한다. 이는 멀티스레딩 환경에서 공유 자원과 락(lock)이 있을 때 주로 발생한다.발생 시나리오L (Low priority) 스레드가 공유 자원(R)을 사용 중이다.H (High priority) 스레드가 실행되며, 같은 자원 R에 접근하려고 한다.하지만 자원 R은 이미 L이 점유 중이므로, H는 대기하게 된다.그 사이 M (Medium priority) 스레드가 스케줄러에 의해 실행된다.M은 자원 R과 무관하지만 H보다 우선순위가 낮으므로 원래 H 다음에 실행되어야 하지만,현재 H는 자원 대기 상태이므로 M이 계속 실행됨..
스레드 락(thread lock) 은 멀티스레딩 환경에서 공유 자원 접근을 동기화하기 위해 매우 중요한 개념이다. 특히 캐시 같은 공유 메모리 구조는 여러 스레드가 동시에 접근하면 데이터 레이스, 비일관성, 세그멘테이션 폴트 등 심각한 문제가 발생할 수 있어, 락이 필수적이다.더보기1. 스레드 락의 목적하나의 스레드만 임계 구역(critical section)에 진입할 수 있도록 제한하는 동기화 장치임계 구역: 동시에 둘 이상이 들어가면 문제가 발생하는 코드 영역 (예: 캐시 삽입, 삭제, 접근)문제점 예시:두 스레드가 동시에 같은 URI를 캐시에 삽입하거나 제거하면 → 메모리 누수, 중복 삽입, 충돌 발생한 스레드가 next 포인터를 변경하고 있는 도중 다른 스레드가 이를 따라 접근 → 세그폴트주제 :..