운영체제

운영체제

스핀락(Spinlock) 뮤텍스(Mutex) 세마포어(Semaphore)

0. 기본 개념 경쟁 조건 (Race Condition) 여러 프로세스/스레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황 동기화(Synchronization) 여러 프로세스/스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것 임계 영역(Critical Section) 공유 데이터의 일관성을 보장하기 위해 하나의 프로세스/스레드만 진입해서 실행 가능한 영역 상호 배제(Mutual Exclusion) 위의 임계 영역에서 설명한, 하나의 프로세스/스레드만 진입해서 실행한다는 것 또는 동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위해 사용되는 알고리즘 그렇다면, 어떻게 이 상호 배제를 달성할 수 있을까요? 락(Lock)을 사용해서 이를 달..

운영체제

컨텍스트 스위칭(Context Switching)

1. 컨텍스트 스위칭(Context Switching) 컨텍스트 스위칭의 정의 지난 글에서 프로세스와 스레드를 얘기하면서 컨텍스트 스위칭(문맥 교환)에 대해서 짧게 얘기했었는데요, 오늘은 이 컨텍스트 스위칭에 대해서 자세히 알아보려 합니다. 컨텍스트 스위칭이란, 'CPU/코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것'입니다.그렇다면, 여기서 말하는 컨텍스트란 무엇일까요? 컨텍스트란 프로세스/스레드의 상태를 의미합니다. 또 이 상태라는 것은 CPU, 메모리에서의 상태를 의미합니다. 컨텍스트 스위칭이 필요한 이유 그렇다면 컨텍스트 스위칭이 왜 필요할까요? 여러 이유들이 있지만, 대표적으로 여러 프로세스와 스레드들을 동시에 실행시키기 위해(그렇게 보이기 위해) 여러 프로세스와 스레..

운영체제

프로세스, 스레드, 멀티태스킹, 멀티프로세싱....??

0. 개요 안녕하세요. 오늘은 여러 프로그래밍이 동시에 실행될 수 있는 원리에 대해서 알아보고자 합니다. 즉, 프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍...이라는 헷갈리는 것들에 대해서 알아볼게요. 1. 사전 지식 프로그램(Program) : 컴퓨터가 실행할 수 있는 명령어들의 집합 프로세스(Process) : 컴퓨터에서 실행 중인 프로그램. 각각의 프로세스는 독립된 메모리 공간을 할당 받음. 명령어들과 데이터를 가짐 CPU(central processing unit) : 명령어를 실행하는 연산 장치 메인 메모리(Main memory) : 프로세스가 CPU에서 실행되기 위해 대기하는 곳 IO(input / output) : 파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 ..

s7won
'운영체제' 카테고리의 글 목록