Note/운영체제
-
메모리 관리Note/운영체제 2020. 11. 27. 18:06
운영체제가 메모리를 관리하는 방법은 크게 3가지 이다. 1) Contiguous alloc: external pregamentation으로 compaction을 필요로 하나 컴팩션 하는데 많은 비용이 소모된다. 2) Paging alloc : 페이지 테이블을 두고 생성되는 virtual address를 logical address를 실제 phiscal 메모리에 매핑을 시킨다. 하나의 프로세스가 하나의 페이지 테이블을 갖는다. 페이지에서 중요한 것은 페이지 테이블을 어떻게 잘 관리해서 성능을 높일 것인가. 페이지 테이블을 이용하면 메미로에 접근이 2번 일어나야 하기 때문. 따라서 TLB(translation look a side buffer)라는 하드웨어의 도움을 받는다. 이것은 pararell하게 접근해..
-
데드락Note/운영체제 2020. 11. 27. 17:30
다. DeadLock A. Dining philosopher 문제. 데드락을 이해하기 위해 Dining Philosopher라는 문제를 고려해 볼 수 있다. 아래 그림은 위키백과를 참조했다. 아래 그림처럼 다섯 명의 철학자가 원탁에 앉아 있고, 각자의 앞에 스파게티 그리고 양 옆의 포크가 하나 씩 있다. 철학자가 스파게티를 먹기 위해서는 양 옆의 포크를 동시에 들어야 한다. 포크 두 개를 집어 스파게티를 한 번 먹고 나면 포크는 내려놓아야 한다. 만약 한명이 스파게티를 먹는다면 그 한 명 양 옆의 철학자는 스파게티를 먹지 못할 것이지만 조금 기다리면 처음 철학자가 포크를 내려놓고 두 명은 먹을 수 있는 상태가 될 것이다. 그런데 만약 모든 철학자가 동시에 자신 왼쪽의 포크를 집게 되면 문제가 생긴다. 그..
-
동기화 이슈Note/운영체제 2020. 11. 27. 17:01
동기화 requirements : Mutual exclusion 가. mutual exclusion이 왜 보장되어야 하는가 Concurrent processing이나 multithread processing에서 두 개 이상의 인스턴스가 메모리를 공유 할 수가 있다. 한 인스턴스가 공유 메모리 즉, critical section에서 작업을 마무리 짓기 전에 다른 인스턴스가 critical section에 접근하게 되면 먼저 작업하던 인스턴스의 내용인 다른 인스턴스에 의해 overwrite된다. 이 경우 먼저 작업하던 인스턴스는 올바른 결과 값을 출력해 낼 수 없게 된다. 따라서 critical section 접근에 대해서 항상 Mutual Exclusion을 보장해 주어야 한다. 동기화 문제 나. How?..
-
리얼타임 스케줄링Note/운영체제 2020. 11. 27. 16:44
6. Real-time scheduling 이는 모든 프로세스가 Deadline 전해 모두 수행이 되도록 스케줄링 하는 방식이다. 이 방식은 Soft Real Time 혹은 Hard Real Time의 상황에서 사용된다. Soft Real Time 이란 프로세스가 deadline을 넘겼을 때 그전 까지 진행했든 프로세싱이 무의미해 지는 환경을 의미한다. Hard Real Time이란 프로세스가 시간 내에 수행하지 못할 경우 의료사고나, 차량사고등 현실에 위험을 줄 수 있는 환경을 의미한다. Real Time Scheduling에는 대표적으로 RMS(Rate-Monotonic Scheduling)을 사용한다. 이는 수행 주기가 가장 짧은 프로세스에 가장 높은 우선순위를 부여하는 방식이다. RMS를 사용하면..
-
프로세스 SubsystemNote/운영체제 2020. 11. 27. 16:36
가 . 프로세스 Structure U 영역 : 사용자 프로세스가 수행할 때 필요로 하는 정보를 저장 하는 공간이다. 이 영역의 정보는 Secoddory Storage (hdd) 등에 저장돼있다. 정보의 양이 매우 크며 디스크와 메모리를 왔다갔다 한다. 프로세스가 현재 오픈한 파일의 정보, 프로세스가 생성한 자식 프로세스의 정보등 이 저장된다. Proc Table : U영역과는 다르게 Swapable 하지 않은 정보이다 프로세스가 생성되어 항상 필요로 하는 정보가 저장되는 공간이다. 크기가 작으며 운영체제가 즉시 access할 필요가 있는 정보들이다. 구동상태가 아닌 수면상태나, 대기 상태에도 필요하다. 프로세스의 현재 상태, 프로세스의 우선 순위, 스케줄링을 위해 대기한 시간등이 저장된다. 프로세스 리전..
-
파일 시스템Note/운영체제 2020. 11. 27. 16:33
File System Structure 파일 시스템은 크게 File Descriptor, Open file table, system file table, inode Table, Device Switch Table로 이루어진다. 1) File Descriptor는 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값을 의미한다. 예를 들어 File Descriptor의 값이 N이면 descript table의 N번째에 사용자의 파일이 있다. 2) Open File Table은 현재 오픈된 파일의 list형태로 표현된 테이블이다. 즉 이 테이블에는 open 된 파일이 모두 들어와 있다. 또한 여기에는 file descriptor가 저장되어있다. (descript table) 3) System File T..
-
C 메모리 레이아웃Note/운영체제 2020. 11. 27. 16:27
1. Stack 정적 바인딩을 하는 변수들 : 지역변수 (상수 문자열 제외 -> Text 세그먼트) 2. Heap 동적 할당 변수 *Stack의 데이터처럼 자동 소멸하지 않기 때문에 메모리 누수에 주의 해야한다. 3. Data 영역 1) BSS 세그먼트 초기화되지 않은 전역변수, 초기화되지 않은 정적변수 => BSS 세그먼트는 런타임 시에 블록 크기만큼 세그먼트를 할당하고 이 영역을 0으로 초기화함. 따라서, 전역변수와 정적변수는 별도로 초기화하지 않으면 0으로 초기화됨. 2) . Data 세그먼트(DS) = Code 세그먼트 초기화된 전역변수, 초기화된 정적변수 4. Text 세그먼트 * 프로그램 코드(변수 아닌 소스코드), 함수, 전역 상수, 문자열 * 읽기 전용 1) init(const) 영역 - ..
-
Boot up : 디바이스의 첫 동작Note/운영체제 2020. 11. 27. 16:13
1. Unix boot up 과정 1. ROM-BIOS가 실행되어 시스템의 하드웨어 이상유무를 점검한다. 또한 시스템의 하드웨어 정보를 수집한다. 2. 디스크 섹터의 가장 첫번 째 위치에 있는 bootstrap loader를 메모리에 loading한다. 시스템 제어권을 커널에 넘긴 다. 3. bootstrap이 unix의 이미지를 메모리에 load한다. 4. unix 커널은 하드웨어를 초기화 하고 커널 자료구조에 초기값을 부여한다. 5. 프로세스 계층구조 중 root가 되는 프로세스 0을 생성한다. 6. 프로세스 0은 프로세스 1을 fork한다. 이때 커널은 프로세스1을 위해 메모리 영역을 확보해준다. 여기서 프로세스 1은 init프로세스가 된다. 7. 확보된 메모리 영역에 /etc/init 파일을 di..