목록분류 전체보기 (129)
봉황대 in CS
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 스케줄링 알고리즘 라운드 로빈 스케줄링 (Round-Robin Scheduling) RR 스케줄링이라고도 한다. FIFO 스케줄링에서 선점이 추가된 스케줄링이라고 볼 수 있다. 구현 : 원형 큐(circular queue) 준비 큐를 원형 큐로 간주하고, 새로운 프로세스들은 원형 큐의 꼬리에 추가된다. 이 큐에서 순환식으로 한 프로세스에게 작은 단위의 시간량(타임 퀀텀, time quantum)만큼씩 CPU를 할당한다. * 타임 퀀텀은 타임 슬라이스와 같은 개념이다. (10ms ~ 100ms) 즉, 실행 상태의..
문제 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net N×M×H 크기의 상자에 토마토들이 보관된다. (1칸 1토마토) (입력으로 주어지는 값) 1 : 익은 토마토 / 0 : 익지 않은 토마토 / -1 : 토마토가 들어있지 않음 보관 후 하루가 지나면 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 인접한 곳 : 위, 아래, 왼쪽, 오른쪽, 앞, 뒤 (총 6 방향) 창고에 보관된 토마토가 모두 익을 때까지 최소 며칠이 걸리는지를 계산 구하는 ..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 비선점 스케줄링 (Non-preemptive Scheduling) 프로세스가 종료하거나 대기 상태로 전환해 CPU를 자진 반납할 때까지 CPU에 의한 실행을 보장해주는 스케줄링 작업 실행 시간 전체 또는 한 번의 CPU 배당에 대해 적용된다. 선입 선처리 스케줄링 (FCFS) 최단 작업 우선 스케줄링 (SJF) - 선점형으로도 가능 우선순위 스케줄링 - 선점형으로도 가능 선점 스케줄링 (Preemptive Scheduling) (1) 시분할 시스템에서 타음 슬라이스가 소진되었거나, (2) 인터럽트 또는 시스템 ..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. CPU 스케줄링 (CPU Scheduling) 다중 프로그래밍은 CPU가 실행 중인 프로그램을 항상 가지게 하여 CPU 이용률 최대화하기 위한 것이다. 이를 위해서는 현재 실행 상태에 있던 프로세스가 다른 상태로 천이하게 된다면 즉, CPU가 유휴 상태가 될 때마다 운영체제는 그 프로세스로부터 CPU를 회수하고, 실행 상태로 천이시킬 프로세스를 선정하여 할당하여야 한다. 실행할 프로세스를 선택하는 절차는 CPU 스케줄러에 의해 수행되며, 준비 큐(ready queue)에 들어있는 프로세스들 중 하나를 선택하게 ..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 스케줄러 (Scheduler) 컴퓨터가 가진 자원은 한정되어 있고, 이를 여러 프로세스가 효율적으로 사용하기 위해서는 스케줄러(Scheduler)가 필요하다. 스케줄러는 다음 실행 시간에 실행할 수 있는 프로세스들 중 하나를 선택해주는 역할을 해준다. 스케줄러에는 3가지 종류(장기, 중기, 단기 스케줄러)가 있다. 장기 스케줄러 (Long-term scheduler) / 작업 스케줄러 (Job scheduler) 어느 프로그램을 하드 디스크로부터 메모리로 적재할지를 결정하는 스케줄러 일괄처리(batch) 큐를 ..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. Windows 스레드 각 프로세스는 한 개 또는 그 이상의 스레드를 가질 수 있다. CreateProcess() API를 통해서 스레드를 생성하며, * 참고 : 2022.07.09 - [Computer Science/Operating System] - [Chapter 3. 프로세스] 프로세스 생성과 종료 일대일 대응을 통해 사용자 수준 스레드 하나마다 커널 스레드 하나가 대응된다. Windows 스레드는 3가지 자료구조를 가지며, 다음의 항목들에 대한 정보를 저장하고 있다. 1. ETHREAD (executiv..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 다중 스레드 프로그램 설계 시 발생하는 문제들이 있다. 여기서는 관련 여러 문제들과 각각에 대한 해결책을 소개한다. fork() 및 exec() 시스템 호출 한 프로세스가 여러 스레드를 가지고 있는 상태라고 하자. 만약 그중 한 스레드가 프로세스를 생성하는 시스템 콜인 fork()를 호출하게 된다면 새로운 프로세스는 모든 스레드를 복제해야 할까, 아니면 해당 스레드 하나만 가지는 프로세스여야 할까?? fork() 뿐만 아니라 만약 exec() 시스템 콜이었다면 프로세스는 어떻게 조치를 취해야 할까?? 1. ex..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 암묵적 스레딩 (Implicit Threading) 스레드의 생성과 관리에 대한 책임을 컴파일러와 실행시간 라이브러리에게 넘겨주는 것을 말한다. ( ↔︎ 명시적 스레딩 : 개발자가 API를 통해 직접 스레드를 관리 ) 암묵적 스레딩은 개발자의 다중 스레드 응용 프로그램의 설계를 도와주는 한 가지 방법이며, 책에서는 이에 대한 3가지 접근법을 소개하고 있다. 스레드 풀(pool) 새로운 스레드를 매 요청마다 만들어주게 될 경우 아래와 같은 문제들이 발생한다. 1. 스레드를 생성하는 데에는 시간 소요가 발생 2. ..