목록Computer Science & Engineering (91)
봉황대 in CS
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wWYjr/btrGKRWmjzN/nQhoVVxsVxxJc4c60S3kl0/img.png)
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 프로세스 제어 블록 (Process Control Block, PCB) 커널 내의 프로세스 문맥 정보를 저장하는 자료 구조 프로세스의 일생 동안 해당 프로세스의 모든 정적, 동적인 정보를 가진다. 즉, 커널이 프로세스를 관리하기 위한 실체이다. 문맥 교환 시 커널 수준 문맥은 추후 복구를 위해 PCB에 저장(save), 스케줄링된 새로운 프로세스의 문맥이 적재(restore)된다. 2022.07.07 - [Computer Science/Operating System] - [Chapter 3. 프로세스] 프로세스..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bV6FPB/btrGNCQ6KOD/rClaNSiqLIk8zkWvSXbz4K/img.png)
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 프로세스는 실행되면서 그 상태가 변한다. 프로세스의 상태는 그 프로세스의 현재 활동에 따라서 정의된다. * 어느 한순간에 한 처리기 상에서는 오직 한 프로세스만이 실행된다. * 준비 및 대기 상태에는 많은 프로세스가 해당 상태에 있을 수 있다. 생성 (new) 프로세스가 생성된 상태 즉, PCB와 메모리 상의 주소 공간(사용자 문맥)이 마련된 상태이다. 준비 (ready) CPU의 배정을 기다리는 상태 스케줄링에 의하여 선택만 된다면 언제든지 실행이 될 수 있는 상태이며, 준비 리스트 또는 준비 큐에서 기다리고..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bkMvSS/btrGKcLYc5I/vAKjkjdLTwuWCXEuzoFvy1/img.png)
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 프로세스 (Process) 실행 중인 프로그램 시스템 콜을 통해 자원을 요구하는 주체 * 운영체제(시스템) 프로세스 : 운영체제가 필요에 의해 생성, 시스템 코드를 실행한다. * 사용자 프로세스 : 사용자 코드(응용 프로그램)를 실행한다. → 자원 경쟁 측면에서 둘은 동일하다. * 프로그램 그 자체는 프로세스가 아니다! [ 프로그램 ] 명령어 리스트를 내용으로 가진 저장 장치에 저장된 파일(실행 파일)을 뜻한다. → 수동적인 존재 [ 프로세스 ] 메인 메모리에 존재하며, 다음에 실행할 명령어를 지정하는 프로그램..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bx43WN/btrGzcNpxuT/Dpc5UsPV7adY7ziMe1PlJ0/img.png)
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 커널의 구성 상의 특징에 따라 모놀리식 커널과 마이크로 커널로 구분할 수 있다. 모놀리식 커널 (Monolithic kernel) 단일형 커널 모든 기능(프로세스 관리, 메모리 관리, 파일 시스템, 입출력 관리, 네트워크 관리 등)을 커널 내부에 포함한다. 다른 플랫폼으로의 이식성이나 확장성의 한계를 계층구조로 극복하였다. * 계층적 접근(Layered Approach) 방식 시스템을 모듈화 하는 방식 중 하나로, 운영체제를 여러 개의 층으로 나눈다. (하드웨어나 환경에 종속적인 부분을 따로 분리 가능) 장점 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/97MOg/btrGAS01bWc/q7t8UxlcK951ZN9gwLHh7k/img.png)
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 운영체제를 살펴보는 관점에는 3가지가 있다. 1. 운영체제가 제공하는 서비스 2. 운영체제가 사용자 및 프로그래머에게 제공하는 인터페이스 3. 시스템의 구성 요소와 그들의 상호 연결 이번엔 두 번째 관점에 대하여 알아보자. 시스템 호출 (System Call) 시스템 호출은 운영체제에 의해 사용 가능하게 된 서비스에 대한 인터페이스를 제공해준다. 시스템 호출은 어떻게 사용되는가에 대해 알아보기 위해서 한 파일로부터 데이터를 읽어서 다른 파일로 복사하는 프로그램을 작성한다고 가정해보자. 먼저 입력 파일과 출력 파..
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 운영체제를 살펴보는 관점에는 3가지가 있다. 1. 운영체제가 제공하는 서비스 2. 운영체제가 사용자 및 프로그래머에게 제공하는 인터페이스 3. 시스템의 구성 요소와 그들의 상호 연결 우선 첫 번째 관점에 대하여 알아보자. 운영체제 서비스 운영체제가 제공하는 서비스는 다음과 같다. 1. 사용자 인터페이스 (User interface) 사용자가 운영체제와 접촉하는 방식으로, 여러 형태로 제공될 수 있다. (1) 명령어 라인 인터페이스 (command-line interface, CLI) / 명령어 해석기 (comm..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/7KLfa/btrGkr3FFKu/fLbO0uq249OqLaDKD1Cib1/img.gif)
너비 우선 탐색 (Breadth-First Search, BFS) 인접한 노드를 먼저 탐색하는 방식 (매 단계에서 가능한 경우의 수들을 모두 확인하면서 탐색) * 최대한 넓게 이동하여 더 이상 옆으로 갈 곳이 없을 경우 아래로 이동 1. Queue를 통해 구현 2. 최단 경로를 찾을 때 주로 사용 탐색 경로를 결과로 출력한다고 하면 BFS의 파이썬 구현 코드는 다음과 같다. * 양방향 큐(deque) 사용 # N×N 2차원 배열 dy = (-1, 0, 1, 0) dx = (0, 1, 0, -1) # 방문한 노드일 경우 True / 방문하지 않은 노드일 경우 False visited = [[False for _ in range(N)] for _ in range(N)] def BFS(r, c): q = de..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/diLPCB/btrGgnnSCp1/DKNqzo2fTMv4pqruJ348r1/img.png)
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 다중 프로그래밍 (Multiprogramming) 1. 시스템에 들어오는 모든 작업은 디스크의 작업 풀에 적재된다. 2. 한 시점에 운영체제의 정책에 따라 작업 풀 내의 여러 작업이 선택되어 메모리에 탑재된다. 3. 운영체제는 메모리에 탑재된 작업들 중 하나를 선택하여 실행을 한다. 4. 실행 중 입출력이 발생하였을 경우 이것이 끝나기를 기다리지 않는다. 인터럽트를 걸고, 해당 프로그램이 입출력을 하는 동안 스케줄링을 통해 다른 프로그램을 선정하여 CPU가 실행한다. 즉, 작업들이 메모리에 계속 유지되기 때문에..