CS/운영체제 5

[운영체제] 교착 상태(Deadlock)

식사하는 철학자 문제 1. 일정 시간 생각을 한다. 2. 왼쪽 포크가 사용 가능해질 때까지 대기한다. 만약 사용 가능하다면 집어든다. 3. 오른쪽 포크가 사용 가능해질 때까지 대기한다. 만약 사용 가능하다면 집어든다. 4. 양쪽의 포크를 잡으면 일정 시간만큼 식사를 한다. 5. 오른쪽 포크를 내려놓는다. 6. 왼쪽 포크를 내려놓는다. 7. 다시 1번으로 돌아간다. 만약 모든 철학자들이 동시에 자신의 왼쪽 포크를 잡는다면, 모든 철학자들이 자기 오른쪽의 포크가 사용 가능해질 때까지 기다려야 한다. 그런데 모든 철학자들이 그러고 있다. 이 상태에서는 모든 철학자가 영원히 3번 상태에 머물러있어 아무것도 진행할 수가 없게 되는데, 이것이 교착(Deadlock)상태이다. 철학자: 프로세스 / 스레드 포크: 자원..

CS/운영체제 2024.02.08

[운영체제] 동기화 기법

프로세스 동기화 동기화란? 프로세스들 사이의 수행 시기를 맞추는 것 하나의 자원을 하나의 프로세스만이 이용하도록 제어하는 것이다. 동기화에는 실행 순서 제어를 위한 동기화와 상호 배제를 위한 동기화가 있다. 1. 실행 순서 제어 동시에 실행되는 프로세스를 올바른 순서대로 실행하는 것이다. 예를 들면 txt파일에 값을 저장하는 Writer 프로세스와 값을 읽어들이는 Reader 프로세스가 있다면, Writer -> Reader 순서로 실행해야 한다. 2. 상호 배제 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하는 것이다. 계좌에 잔액을 넣는 두 프로세스가 있다면 한 프로세스가 잔액에 접근했을 때 다른 프로세스는 기다려야 한다. * 생산자와 소비자 문제: 물건을 생산해내는 프로세스와 물건을 ..

CS/운영체제 2023.01.08

[운영체제] CPU 스케줄링

CPU 스케줄링 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것을 CPU 스케줄링이라고 한다. 프로세스 우선순위 우선순위가 높은 프로세스란 빨리 처리해야하는 프로세스들을 의미한다. (ex 입출력이 많은 프로세스) 상황에 맞게, 프로세스의 중요도에 맞게 프로세스가 CPU를 이용할 수 있도록 운영체제는 프로세스마다 우선순위를 부여한다. 운영체제는 각 프로세스의 PCB에 우선순위를 명시하고, 이를 기준으로 먼저 처리할 프로세스를 결정한다. 스케줄링 큐 연결리스트로 구현 각 PCB는 다음 PCB를 가리키는 포인터를 포함 운영체제가 매번 PCB를 검사하여 자원을 이용할 프로세스를 결정하는 것은 번거롭기 때문에, 효율적인 스케줄링을 위해 스케줄링 큐를 사용한다. 스케줄링 큐는 크게 두가지가 ..

CS/운영체제 2022.12.22

[운영체제] 프로세스와 스레드(PCB, 컨텍스트 스위칭, 멀티 프로세스, 멀티 스레드)

프로세스와 스레드 1.프로세스란? 실행 중인 프로그램 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 프로세스가 됨 포그라운드 프로세스: 사용자가 보는 앞에서 실행하는 프로세스 백그라운드 프로세스: 사용자가 보지 못하는 뒤편에서 실행되는 프로세스 사용자와 상호작용하지 않는 백그라운드 프로세스: 데몬(유닉스), 서비스(윈도우) 프로그램은 하드디스크 등의 보조기억장치에 저장된 실행 코드이고, 프로세스는 프로그램을 실행시켜 프로그램이 메모리 상에서 실행하는 작업 단위이다. 프로세스 제어 블록(PCB) 프로세스와 관련된 정보를 저장하는 자료구조로, 특정 프로세스를 식별하고 처리하는데 필요한 정보를 판단한다. 프로세스 생성 시에 만들어지고 실행이 끝나면 폐기된다. 커널 영역에 생성된다. PCB에 ..

CS/운영체제 2022.09.29

[운영체제] 운영체제란?(커널, 이중모드, 시스템콜)

운영체제란? 프로그램 실행에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 컴퓨터가 부팅될 때 메모리 내 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 올바르게 실행되도록 도움 실행할 프로그램을 메모리에 적재하고 삭제하며 지속적으로 메모리 자원을 관리 여러 프로그램에 CPU 자원을 공정하게 할당 응용 프로그램과 하드웨어 사이에서 응용 프로그램에 필요한 자원 할당, 올바르게 실행되도록 관리 관리할 자원별로 기능이 나눠져 있다. (메모리 관리, CPU관리, 디스크 관리...) 운영체제 덕분에 개발자는 하드웨어를 조작하는 코드를 직접 작성할 필요가 없음 운영체제를 통해 하드웨어와 프로그램을 더 깊이 이해할 수 있음 운영체제의 핵심 서비스 프로세스 관리 자원..

CS/운영체제 2022.09.29