일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- attribute
- Substring with Concatenation of All Words
- concurrency
- 프로그래머스
- t1
- Python
- 715. Range Module
- Regular Expression
- 파이썬
- Class
- LeetCode
- data science
- iterator
- 109. Convert Sorted List to Binary Search Tree
- Generator
- Protocol
- Python Implementation
- shiba
- Convert Sorted List to Binary Search Tree
- 밴픽
- 315. Count of Smaller Numbers After Self
- DWG
- Python Code
- 30. Substring with Concatenation of All Words
- 운영체제
- 컴퓨터의 구조
- kaggle
- 시바견
- Decorator
- 43. Multiply Strings
- Today
- Total
목록운영체제 (12)
Scribbling
1. 네트워크와 인터넷 초기의 컴퓨터 네트워크는 한 건물 안에 있는 컴퓨터를 연결하는 수준이었다. 그리고 이러한 의미에서 이를 LAN(Local Area Network)라고 불렀다. 개인 PC의 메인보드에는 랜카드가 달려 있는데, 이는 몇 킬로미터 내의 네트워크를 연결가능한 카드라는 의미이다. 여러 컴퓨터를 연결하여 LAN을 구성하는 방법은 많은데, 이를 토폴로지(Topology)라고 하며 스타형, 링형, 버스형 등이 있다. 제록스사는 버스형에 CSMA/CD(Carrier Sense Multiple Access/Collison Dectect) 프로토콜을 사용하는 LAN을 이더넷(ethernet)이라고 이름 붙였다. 이더넷은 버스에 연결만 하면 LAN에 기기를 추가할 수 있으며, 개별 기기의 고장이 네트워..
1. 파일 시스템 1.1 파일 시스템 컴퓨터 시스템에는 다양한 종류의 파일이 있으며, 하드디스크 등의 저장장치에 보관된다. 보관 과정에서 사용자가 직접 개입하면 다른 사용자의 파일이 훼손되거나 저장장치 내부를 어지럽히는 등의 문제가 발생할 수 있다. 운영체제는 이를 방지하기 위해 사용자가 직접 파일을 보관하거나 접근하지 못하도록 한다. 대신 파일을 보관하고 관리하는 파일 관리자를 두는데, 이를 파일 시스템이라고 한다. 파일 시스템에서 파일 관리자는 사용자의 요청에 따라 파일을 저장하거나 읽을 수 있다. 파일 관리자는 파일 테이블을 사용하여 파일의 생성, 수정, 삭제 등을 수행한다. 사용자가 특정 파일에 접근하려면 파일 관리자로부터 권한을 획득해야 하는데, 이를 파일 디스크립터라고 한다. 1.2 파일 시스..
1. 입출력 시스템 1.1 입출력장치 컴퓨터는 CPU와 메인메모리, 주변장치인 입출력장치와 저장장치로 구성되며, 각 장치는 메인보드의 버스로 연결된다. 주변장치는 데이터 전송 속도에 따라 저속 주변장치와 고속 주변장치로 나뉜다. - 저속 주변 장치: 데이터 전송률이 낮은 장치로, 키보드나 마우스가 해당된다. - 고속 주변 장치: 대용량의 데이터가 오고가는 장치이다. 출력장치인 그래픽카드나 하드디스크가 해당된다. 1.2 입출력 버스의 구조 초기 컴퓨터는 모든 장치가 하나의 버스로 연결된 일괄작업 시스템으로, CPU가 작업을 진행하다가 입출력 또한 직접 수행하였다. 이를 폴링(Polling) 방식이라고 한다. 그러나 주변장치는 CPU나 메인메모리보다 매우 느리다. 그래서 폴링 방식처럼 CPU가 직접 입출력을..
1. 요구 페이징 1.1 요구 페이징 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정하는 것이 가져오기 정책이다. 일반적으로 프로세스가 요청할 때 메모리로 가져오는데, 일르 요구 페이징(Demang Paging)이라고 한다. 컴퓨터를 오래 켜둔 상태로 사용하다보면 느려진다. 그 이유는 작업을 하지 않고 쉬는 프로세스나 좀비 프로세스가 메모리를 차지하여 메모리 관리가 복잡해지기 때문이다. 덩치가 큰 프로세스는 모든 모듈이 메모리에 올라오지 않는다. 필요한 모듈만 올려두고 나머지 모듈은 필요시에만 메모리에 올려서 사용한다. 이러한 방식을 통하여 메모리를 효율적으로 관리 가능하며, 사용자에 대한 응답 속도를 향상시킬 수 있다. 포토샵을 예로 들어보자. 포토샵을 실행하면 기본적인 모듈이 메모리에 올..
1. 가상 메모리 컴퓨터마다 실제 메모리의 크기는 다르다. 가상 메모리는 물리 메모리의 크기와 상관없이 메모리를 이용할 수 있도록 지원하는 기술이다. 프로그래머는 가상 메모리 덕분에 물리 메모리의 크기에 구애받지 않고 작업할 수 있는 작업 공간을 얻게 되는 셈이다. 현대 메모리 관리의 가장 큰 특징은 물리 메모리의 크기와 프로세스가 올라갈 메모리의 위치를 신경 쓰지 않고 프로그래밍하도록 지원한다는 것이다. 이러한 메모리 시스템을 가상 메모리(Virtual Memory)라고 한다. 모든 프로세스는 물리 메모리와 별개로 자신이 메모리의 어느 위치에 상관없이 0번지부터 시작하는 연속된 메모리 공간을 가진다. 메모리 관리자는 물리 메모리의 부족한 부분을 스왑 영역으로 보충한다. 즉 물리 메모리가 꽉 찼을 때 일..
1. 메모리 관리 1.1 메모리 관리 시작하기에 앞서, 이 장에서 메모리는 메인메모리를 의미한다. CPU는 메모리에 있는 내용을 가져오거나 작업 결과를 메모리에 저장하기 위하여 메모리 주소 레지스터(MAR)을 사용한다. 폰노이만 구조의 컴퓨터에서는 메모리가 유일한 작업 공간이므로, 모든 프로그램은 메모리에 올라와야 실행 가능하다. 운영체제도 당연히 메모리에 올라와야 실행이 가능하다. 전원 버튼을 누르면 부팅이 이루어지는데, 이 때 하드디스크에 저장된 운영체제가 메모리에 올라간다. 메모리 관리는 운영체제를 비롯하여 여러 프로세스가 동작할 때 메모리를 어떻게 관리하는가에 관한 문제이다. 이는 메모리 관리 시스템(MMS; Memory Management System)이 담당한다. 1.2 컴파일러와 인터프리터 ..
1. 교착 상태 1.1 교착 상태 임계구역이 존재하면 프로세스 간 상호 배제가 보장되지만, 작업이 더 이상 진행되지 않는 교착 상태에 빠지는 경우가 있다. 이처럼 2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태를 교착 상태(Dead Lock)라고 한다. 교착 상태는 아사 현상과는 전혀 다르다. 아사 현상은 운영체제가 잘못된 정책을 사용하여 프로세스의 작업이 크게 지연되는 것을 의미한다. 반면 교착 상태는 여러 프로세스가 진행되는 과정에서 자연적으로 일어난다. 컴퓨터 시스템에서 교착 상태는 시스템 자원, 공유 변수(혹은 파일), 응용 프로그램 등을 함께 사용할 때 발생할 수 있다. 1.2 자원 할당 그래프 자원 할당 그래프(Resource Allocat..
1. 프로세스 간 통신 1.1 프로세스 간 통신의 개념 독립적인 프로세스끼리 서로 데이터를 주고 받는 경우 통신을 사용한다. 프로세스끼리 통신을 하는 경우 누가 먼저 작업할지, 작업이 언제 끝날지 등을 서로 알려주어야 하는데 이를 동기화라고 한다. - 프로세스 내부 데이터 통신: 하나의 프로세스 내의 2개 이상의 스레드가 통신하는 방식. - 프로세스 간 데이터 통신: 여러 프로세스끼리 통신하는 경우. - 네트워크를 이용한 데이터 통신: 여러 컴퓨터가 네트워크로 연결되어 있을 때 프로세스의 소켓을 이용한 통신 방식. 1.2 바쁜 대기와 동기화 전역 변수를 사용하여 통신하는 경우의 가장 큰 문제는 언제 데이터를 보낼지 데이터를 받는 쪽에서 모른다는 것이다. 데이터를 받는 측에서는 반복적으로 전역 변수의 값을..
1. 스케줄링 CPU 스케줄링은 CPU에 어떤 작업을 배정할지 결정하는 것이다. 컴퓨터 시스템의 효율은 이에 따라 달라진다. 앞서 배운 것 처럼, 프로세스는 생성 상태, 준비 상태, 실행 상태, 대기 상태 등의 여러 상태를 거치며 작업이 이루어진다. CPU 스케줄러는 프로세스가 생성된 후부터 종료될 때까지 모든 상태 변화를 조정한다. - 고수준 스케줄링: 고수준 스케줄링(high level scheduling)은 작업 스케줄링(job scheduling)이라고도 불리우며, 시스템 내의 전체 작업 수를 조절하는 것을 의미한다. - 저수준 스케줄링: 저수준 스케줄링(low level scheduling) 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 등을 결정하는 일이다. - 중간 ..
1. 프로세스의 개요 1.1 프로세스 프로세스는 하나의 작업 단위이다. 프로그램은 하드디스크 같은 저장장치에 보관되어 있다가 마우스로 더블클릭하면 실행된다. 이 때, 실행된다는 것은 정적인 상태의 프로그램이 메모리에 올라와서 동적인 상태의 프로세스가 되는 것을 의미한다. 1.2 시분할 CPU가 1개인 컴퓨터에서 여러 개의 프로세스가 동시에 실행되는 것은, CPU가 시간을 쪼개어 여러 프로세스에 적당히 배분하기 때문이다. 1.3 프로그램에서 프로세스로의 전환 프로세스는 컴퓨터 시스템의 작업 단위로 태스크(task)로도 불린다. 운영체제는 프로그램을 메인 메모리로 올린다. 그리고 프로세스에 '프로세스 제어 블록(Process Control Block)'을 준다. 즉, 프로그램이 프로세스가 되었다는 것은 운영..