교착 상태(deadlock)와 은행원 알고리즘
·
Computer Science/Operating System
교착 상태란?두 개 이상의 프로세스나 스레드가 서로 상대방의 작업이 끝나기를 무한정 기다리며, 결국 아무것도 완료되지 않는 상태.   교착 상태의 원인 (조건)상호배제(Mutual Exclusion):  자원은 한번에 하나의 프로세스만 사용 가능점유대기(Hold and Wait): 최소 하나의 자원을 점유하고 있으며, 추가 자원을 요청하여 대기중인 프로세스가 존재비선점(Non-preemptive): 자원을 강제로 뺏을 수 없음환형 대기(Circular Wait): 대기하고 있는 프로세스들 간의 순환적인 고리가 형성됨.4가지 조건이 모두 충족되어도 교착상태는 발생하지 않을 수 있다. 그러나 4가지 조건이 모두 충족되어야 “교착상태가 일어날 수” 있다.     교착 상태 해결 방법 교착상태 예방(Preven..
경쟁상태 해결하기 - 뮤텍스, 세마포어, 모니터
·
Computer Science/Operating System
경쟁상태 해결 조건여러 프로세스나 스레드가 공유 자원에 접근할 때 데이터의 일관성과 무결성을 보장하기 위해 아래와 같은 조건을 만족해야한다. 상호배제 (Mutual Exclusion)임계영역에 한번에 하나의 프로세스나 스레드만 접근할 수 있도록 해야함.즉, 어떤 프로세스가 임계영역에 있을 때 다른 프로세스는 그 임계영역에 들어갈 수 없음. 진행의 융통성(Progress)임계영역에 들어가려는 프로세스가 없으면, 임계영역에 들어갈 수 있는 프로세스가 이를 결정할 수 있어야 함.즉, 임계영역에 들어갈 수 있는 프로세스를 선택하는 과정이 지연되지 않고 진행되어야 함.결정은 임계영역에 있지 않은 프로세스만 참여할 수 있음. 한정 대기 (Bounded Wating)특정 프로세스가 임계영역에 들어가는 것이 무한정 지..
공유자원과 경쟁 상태, 임계영역
·
Computer Science/Operating System
공유 자원 (Shared Resource)공유자원이란 시스템 안에서 각 프로세스, 스레드가 함께 접근할 수 있는 자원을 말한다. 공유 자원의 특징다중접근여러 프로세스나 스레드가 동시에 접근할 수 있기 때문에 관리가 필요.데이터 일관성올바르게 관리되지 않으면 데이터 일관성이 깨질 수 있음동기화 필요여러 접근을 조율하기 위한 동기화 매커니즘 필요공유 자원의 예시여러 스레드가 동시에 접근하는 전역변수여러 프로세스가 동시에 접근하는 파일메모리, 파일, 데이터베이스...  경쟁 상태 (Race Condition)두개 이상의 프로세스나 스레드가 공유 자원에 동시에 접근할 때 발생하는 문제.동시에 접근을 시도할 때 타이밍이 예상되는 결과 값에 영향을 줄 수 있는 상태. 이를 잘 해결하지 못하면 데이터 정합성, 데이터..
멀티태스킹(Multitasking)과 CPU 스케줄링(선점형, 비선점형, 라운드로빈, 우선순위 기반 스케줄링, FIFO, SFJ ...)
·
Computer Science/Operating System
멀티태스킹(Multitasking)이란?여러 프로세스 내에서 여러 작업을 동시에 수행하는 것을 의미한다. 정확히는, 멀티태스킹은 CPU의 스케줄링을 통해 "동시에 수행하는 것처럼 보이는 것"이다.멀티프로세싱은 실제로 CPU병렬 처리를 통해 동시에 작동하는 것으로 차이가 있다.   멀티태스킹 스케줄링 방식멀티프로그래밍 : 여러 프로그램이 메모리에 동시에 적재되어 CPU가 필요할 때마다 프로그램을 실행시분할 : 여러 프로세스가 동시에 실행되는 것처럼 보이도록 각 프로세스에 시간 할당량을 주고 CPU를 빠르게 전환해주는 방식실시간 시스템 : 시스템의 응답시간이 중요한 환경에서 특정 작업을 정해진 시간안에 완료해야 하는 방식  스케줄링 알고리즘비선점형 스케줄링 (Non-preemptive Scheduling)프..
프로세스의 상태
·
Computer Science/Operating System
Create , NewUser의 Job/command 요청이 커널에 등록되는 상태.커널이 등록되면서 프로세스가 생성됨.커널 안에 프로세스를 위한 PCB가 생기고 초기값이 PCB에 저장.PCB(Process Control Block) 알아보기프로세스는 생성 되었으나, 아직 준비 큐에 들어가지 않은 상태이다.이때 커널은 메모리 공간이 있는지 확인한다.fork()나 exec() 함수를 통해 프로세스가 생성된 상태이다.fork() : 부모 프로세스의 주소 공간을 그대로 복사하며, 새로운 자식 프로세스를 생성. 주소 공간만 복사할 뿐, 프로세스의 비동기 작업 등은 상속하지 않음.exec() : 새롭게 프로세스를 생성  Ready프로세스가 생성되고 커널이 "메모리 할당"을 인지하고 (implicit 하게 자원 요청..
IPC(Inter-Process Communication)
·
Computer Science/Operating System
IPC(Inter-Process Communication)란?프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 방법.ex) 브라우저를 띄워 네이버 서버와 HTTP 통신해서 html 등의 파일을 가져오는 것 IPC의 종류공유메모리파일소켓파이프메세지 큐위 다섯가지 IPC 종류를 하나씩 살펴보자  공유메모리 (Shared Memory)여러 프로세스가 메모리를 공유하여 서로 통신할 수 있도록 하는 것.어떠한 매개체를 통해 데이터를 주고 받는게 아니라 메모리 자체를 공유.때문에 불필요한 데이터 복사의 오버헤드가 발생하지 않음.고속 데이터 전송 : 메모리에 직접 접근하므로 속도가 가장 빠른 방법같은 메모리 영역을 여러 프로세스가 공유하기 때문에 동기화 필요  파일(File)디스크에 저장된 데이터를 기반으로 통신..
멀티프로세싱(Multiprocessing), 멀티스레딩(Multithreading)
·
Computer Science/Operating System
멀티프로세싱 (Mutiprocessing)멀티프로세싱이란? 여러 CPU를 사용하여 동시에 여러 프로세스를 실행하는 컴퓨팅기술. 각 프로세스는 독립된 메모리 공간을 갖고 있어 서로의 메모리에 직접 접근하지 않는다.⭐️ 프로세스 간 통신 (IPC) : 프로세스 간 데이터를 주고받기 위해 파이프, 메시지 큐, 공유메모리 등의 IPC 메커니즘을 사용. IPC(Inter-Process Communication) 설명 바로가기 멀티프로세싱의 장점과 단점장점여러 프로세스를 병렬로 실행함으로써 작업 처리 속도가 빨라짐 (성능 향상)하나의 프로세스가 실패해도 다른 프로세스에는 영향을 미치지 않음 (안정성)추가적인 CPU나 코어를 통해 쉽게 시스템 성능 확장이 가능함 (확장성)단점다중 CPU/코어 시스템은 단일 CPU 시..
컨텍스트 스위칭(Context Switching)
·
Computer Science/Operating System
Context Switching 이란?CPU에서 실행중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것.기존 프로세스/스레드의 상태 or 레지스터 값을 저장하고, 다음 프로세스/스레드의 상태 or 레지스터 값을 교체하는 작업.PCB나 TCB 를 기반으로 프로세스의 상태를 저장하고 다시 복원시키는 과정.* PCB란? [Computer Science/OS] - PCB(Process Control Block)    Context란?사용자와 다른 사용자 || 사용자와 시스템 || 디바이스간 상호작용을 미치는 개체의 현재 상황(상태)를 규정하는 정보들을 말한다.OS에서는 CPU가 프로세스/스레드를 실행하기 위한 해당 프로세스/스레드의 정보들을 말한다.context 의 구성요소CPU 레지스터 값 : 현재 ..
PCB(Process Control Block)
·
Computer Science/Operating System
PCB(Process Control Block)란?운영체제에서 관리할 필요가 있는 특정한 프로세스 정보를 포함하는 데이터 블록이다.커널 스택에 저장되며 각 프로세스가 생성될 때 고유의 PCB가 생성되고 프로세스가 종료되면 PCB는 제거된다.커널 스택 : 가상메모리는 사용자 공간과 커널 공간으로 구분되는데 이는 모두 스택 자료구조를 기반으로 관리된다, 때문에 사용자 스택, 커널 스택이라고도 한다. 사용자 스택은 유저모드에서만, 커널 스택은 커널모드에서만 접근 가능하다. 프로세스가 CPU를 점유하여 작업을 처리하다가, 상태가 전이되면 진행하던 작업 내용을 모두 정리하고 CPU에 반환해야 한다. 이때, 작업 내용을 PCB에 저장하여 후에 다시 CPU를 점유하여 작업을 수행해야할 때 PCB로부터 정보들을 알아내..