일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 운영체제
- 뮤텍스
- 깃
- java
- 개발
- Public
- spring
- 컴퓨터공학
- 알고리즘
- 세마포어
- 이펙티브 자바
- 공채
- 스터디
- OS
- CS
- Effective Java
- 신입
- 우리카드
- 스프링
- 정보처리기사
- 메모리
- package-private
- 프로그래밍
- github
- 깃허브
- 자바
- 신입사원
- IT
- 컴퓨터과학
- 디지털
- Today
- Total
목록CS스터디/운영체제 (11)
주니어 개발자 성장기
Segmentation세그먼테이션은 프로세스를 의미 단위로 분할하여 메모리에 적재하는 방식이다.Segment는 논리적 단위(Logical Unit)이다.즉, 한 개의 함수, 스택, 힙 등 의미 단위로 분할할 수 있다. 논리적 주소논리적 주소는 segment-number와 offset으로 구성된다.각 프로세스는Segment table을 가지며 base와 limit로 구성된다.base: segment-number에 해당하는 세그먼트의 물리적 시작점(주소)limit: segment-number에 해당하는 세그먼트의 길이 STBR(Segment-table base register)Segement table 자체의 물리적 주소를 나타내는 레지스터 STLR(Segment-table length register)프로..
Noncontiguous allocation(불연속 할당/ 분산 할당) 하나의 프로세스가 메모리의 여러 영역에 분산되어 올라갈 수 있음 Paging address binding이 복잡해짐 동일한 크기의 페이지로 프로세스를 나눠 메모리에 적재 내부 단편화 발생 가능 페이지 테이블에는 각 페이지가 물리 메모리에 몇 번 프레임에 있는지 원소로 기록되어 있다. 논리 주소는 페이지 넘버($p$)와 오프셋($d$)로 구성되어 있다. Page Table의 구현 프로그램마다 페이지 테이블이 별도로 존재한다. 페이지 테이블은 메인 메모리에 상주한다. 그래서 모든 메모리 접근 연산에는 2번의 Memory access가 필요하다. 페이지 테이블 접근 1회 실제 data / instruction 접근 1회 Page-table..
물리 메모리 할당 메모리는 일반적으로 두 영역으로 나뉘어 사용한다. OS 상주 영역 interrupt vector와 함께 낮은 주소 영역 사용 사용자 프로세스 영역 높은 주소 영역에 있다. 사용자 프로세스 영역의 할당 방법 Contiguous allocation(연속 할당) 각각의 프로세스가 메모리의 연속적인 공간에 적재되도록 하는 것 외부 조각(external fragmentation) / 외부 단편화 분할(partition)의 크기가 작아 프로그램에 할당되지 못해 낭비되는 메모리 공간 내부 조각(Internal fragmentation) / 내부 단편화 프로그램에 할당되었지만 사용되지 않는 메모리 공간 고정 분할 할당(Fixed partition allocation) 물리적 메모리를 몇 개의 영구적 ..
논리 주소(logical address) 프로세스마다 독립적으로 가지는 주소 공간 각 프로세스마다 0번지부터 시작한다. CPU가 보는 주소는 logical address이다. 물리 주소 메모리에 실제 올라가는 위치 주소 바인딩: 주소를 결정하는 것 Symbolic Address -> Logical Address -> Physical Address Logical Address에서 Physical Address으로의 변화 시점(next page)이 언제인가? Compile time binding 물리적 메모리 주소(physical address)가 컴파일 시 알려짐 시작 위치 변경시 재컴파일해야 한다. 컴파일러는 절대 코드(absolute code)생성 현재는 거의 사용되지 않음 Load time bindi..
교착상태(Deadlock) 일련의 프로세스들이 서로가 가진 자원(SW || HW)을 기다리며 block된 상태 자원이란? 하드웨어, 소프트웨어 등을 포함하는 개념 EX) I/O device, CPU cycle, memory space, semaphore 등 프로세스가 자원을 사용하는 절차 요청(Request), 획득(Allocate), 사용(Use), 반납(Release) 발생 조건 Mutual exclusion(상호 배제) 매 순간 하나의 프로세스만이 자원을 사용할 수 있음 No preemption(비선점) 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않음 Hold and wait(점유 대기) 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있음 Circula..
세마포어의 문제점 코딩하기 힘들다. 정확성(correctness)의 입증이 어렵다. 자발적 협력(voluntary cooperation)이 필요하다. 한 번의 실수가 모든 시스템에 치명적인 영향을 줄 수 있다. 실수 예시 Mutual Exclusion이 깨짐 V(mutex); Critical Section P(mutex); Deadlock 발생 P(mutex); Critical Section P(mutex); Monitor 동시 수행중인 프로세스 사이에서 abstract data type의 안전한 공유를 보장하기 위한 high-level synchronization construct 이다. Monitor에서 자체적으로 프로세스의 접근을 관리하기 때문에 세마포어와 달리 개발자가 직접 Lock을 걸 필요가 ..