Computer Science/운영체제

Computer Science/운영체제

뮤텍스와 세마포어(Mutex Locks & Semaphore)

CSP를 해결하는 소프트웨어 툴 3가지 뮤텍스(Mutex Locks) : 동기화의 기본 툴 mutual exclusion = mutex critical section에 접근하기 위한 열쇠가 필요하다. 접근이 끝나면 열쇠를 반납 Busy Waiting 대기 상태에서 무한 루프를 도는 상태 Spinlock 세마포어(Semaphore) : 동기화를 위한 더 효과적인 툴 신호장치. 신호기. 모니터(monitor) : 뮤텍스와 세마포어의 단점을 극복한 툴 Liveness

Computer Science/운영체제

동기화 문제의 해결책 (Synchronization Solution)

소프트웨어 기반 해결책 데커 알고리즘 아이젠버그, 맥과이어 알고리즘 피터슨 알고리즘 두 프로세스가 번갈아 실행하는 것을 규제함 임계 영역과 여분 영역을 번갈아 실행 자기 차례임을 표시하고 실행 완벽하게 동작한다는 보장이 없다 상호배제, 데드락, 기아현상을 예방할 수 있다 하드웨어 기반 해결책 임계 영역 문제 해결에 도움을 줌으로써 동기화를 직접적으로 할 수 있음 3가지 동작 메모리 장벽(memory barriers or fences) 하드웨어 지침(hardware instructions) 원자 변수(atomic variables) 원자성(Atomicity) 원자적 동작: 인터럽트를 걸 수 없는 하나의 동작 단위 원자성을 지키는 변수를 설정해 지킬 수 있다.

Computer Science/운영체제

프로세스 동기화 (Synchronization Tools)

배경 여러 프로세스가 같은 데이터를 공유할 때 동시 접근시 문제가 생김 경쟁 상황(Race Condition) 동시에 같은/공유된 데이터에 접근할 경우 실행의 결과는 접근이 일어나는 순서에 의존적 해결 방법 한개의 프로세스만 공유 데이터를 관리할 수 있다고 보장 = 프로세스 동기화 예시 계좌이체 상황 임계 영역 문제 프로세스의 세그먼트 영역을 임계 영역으로 칭함 한 프로세스가 임계영역에서 실행하고 있을 때 다른 프로세스가 접근할 수 없음 서로 다른 프로세스는 임계 영역에서 동시 실행이 불가능 코드 영역 진입 영역 임계 영역에 대한 진입허가를 요청하는 영역 임계 영역 출구 영역 remainder 영역 (여분 영역) 남아있는 코드를 위한 영역 3가지 요구사항(전부 만족해야 임계 영역을 충족) 상호 배제(Mu..

Computer Science/운영체제

CPU 스케줄링 (CPU Scheduling)

CPU 스케줄링이란? 멀티프로그래밍 되어있는 OS에서 기본이 되는 요소이다. 멀티프로그래밍의 목적은 프로세스가 동시에 전부 돌 수 있게하고, CPU 사용성을 최대화 하기 위해서이다. 메모리에 있는 프로세스 중 ready 상태에 있는 프로세스에게 CPU를 할당해주는 것 선택 방식 FIFO 큐: First-In, First-Out Priority 큐 선점형(Preemptive) vs 비선점형(Non-preemptive) 비선점형 스케줄링 CPU를 프로세스가 놓을 때까지 강제로 스위치할 수 없음 선점형 스케줄링 스케줄러가 프로세스를 쫓아낼 수 있음 CPU 스케줄링의 결정 프로세스가 running -> waiting (비선점) 프로세스가 running -> ready (선점/비선점) 프로세스가 waiting -..

Computer Science/운영체제

멀티쓰레딩 (Pthread)

쓰레드의 종류 사용자 쓰레드 (user threads) 커널의 도움 없이 작동하는 쓰레드 커널 쓰레드 (kernel threads) OS가 관리해주는 쓰레드 쓰레드 라이브러리 쓰레드를 만들고 관리하는 API POSIX Pthreads 구현체 아님 Window thread Java thread Implicit thread(절대적인 쓰레드)의 네가지 접근법 쓰레드 풀 풀에 쓰레드를 몇 개 만들어두고 꺼내쓴다 포크 & 조인 OpenMP C/C++로 컴파일러 지시하는 라이브러리 병렬 지역에 블록으로 코드를 짜두면 컴파일러가 자동으로 병렬적으로 돌아가게 해준다 Grand Central Dispatch (GCD) Apple 사에서 만든 OS

Computer Science/운영체제

쓰레드의 이해 (Thread & Concurrency)

쓰레드란? 가벼운 프로세스 CPU 사용의 기본적인 유닛(단위) 실질적으로 쓰레드의 ID가 CPU를 점유한다 프로세스는 여러개의 쓰레드로 구성되어 있다 멀티쓰레드의 장점 응답성 특정 프로세스가 block되어도 응답이 지속될 수 있다 리소스 공유 메시지 패싱이나 공유메모리 방식보다 간단하다. data 영역을 공유하기 때문 경제성 프로세스를 생성하는 것보다 쓰레드를 생성하는게 비용이 덜 든다 컨텍스트 스위칭의 비용도 더 적게 든다 확장성 (Scalability) 멀티프로세서 환경에서도 이점이 있다 자바에서의 쓰레드 Thread 클래스를 상속받는다 Runnable 인터페이스를 implement한다 (추천: 클래스는 하나밖에 상속이 안되기 때문) 람다 표현을 활용한다 멀티코어 시스템에서의 멀티쓰레드 동시성이 향상..

Computer Science/운영체제

프로세스간 통신의 실제 (IPC)

공유 메모리의 예: POSIX Shared Memory(uniX) 메시지 패싱의 예: Pipes(UNIX) POSIX Shared Memory(uniX) 메모리에 매핑되어 있는 파일들로 구성되어 있다. 공유 메모리 객체를 생성한 후, 객체의 사이즈를 정해준 후 memory-mapped 파일을 할당한다. Pipes(UNIX) 초기 유닉스 시스템의 IPC 메커니즘 중 하나이다 두개의 프로세스가 소통할 수 있도록 연결 역할을 해준다 파이프의 4가지 이슈 한 방향으로만 흘러가는가 양방향 소통이 가능하는가 생산자와 소비자가 부모-자식 관계를 가지고 있는가 네트워크에서 소통하는가 파이프의 일반적인 종류 기본 파이프 한방향 통신 부모 프로세스 - 자식 프로세스 통신 클라이언트-서버 시스템에서의 소통 소켓 원격지를 위..

Computer Science/운영체제

프로세스간 통신(IPC)

프로세스가 독립적이다: 데이터를 공유하지 않는다. IPC(Inter-Process Communication)란? 협력하는 프로세스들 간에 데이터를 전달하고 받는 것을 허용하는 것. IPC의 두가지 모델 공유 메모리 Producer-Consumer 문제 생산자가 정보를 생산하고 소비자가 정보를 소비한다. 웹 서버가 HTML 파일을 생산하고 브라우저가 이를 소비한다. 공유 메모리는 생산자와 소비자가 공유하는 메모리이다. 생산자는 버퍼를 채우고, 소비자는 버퍼를 비운다. 공유 메모리의 문제점 생산자가 여러개이고 소비자도 여러개일 경우 버퍼 구현이 복잡해진다. Prosumer(생산자면서 소비자)일 경우에는 문제점 해결. 해결책: 메시지 패싱(Message-Passing) 메시지 패싱(Message-Passing..

레이튼
'Computer Science/운영체제' 카테고리의 글 목록