| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- Volatile
- 일급 컬렉션
- factory
- Spring
- builder
- OAuth 2.0
- synchronized
- spring security
- Google OAuth
- Dependency Injection
- 일급 객체
- lombok
- Today
- Total
HJW's IT Blog
OS: Segmentation 본문
Segementation 기본 개념
> 프로세스를 메모리 내에서 여러 segement로 나눈다
> 각 segement는 분명한 목적이 존재:
>> 예) code, static data, heap, stack
>> Segement 는 다른 크기일 수 있다
> 전체 프로세스는 여전히 메모리에 로드 되어 있지만, 그 프로세스를 구성하는 segment들은 연속적으로 메로리에 올라가지 않아도 된다
> Segment는 protection bit 을 가진다
>> Read-only (code)
>> Read-write (data, heap, stack)
>> 프로세스들이 코드와 데이터를 공유할 수 있게 해준다.
Segment Address
> Segment의 가상 주소는 다음으로 이루어 진다
>> Segment Number
>> Segment의 시작 offset
>> 둘 모두 Assembler가 생성
> Instruction 에는 무엇이 저장되는가?
>> 간단한 방법
>>> 주소의 최상위 비트가 segment를 구분
>>> 최하위 비트는 offset을 구분
>> Implicit Segment 지정
>>> 실행되는 명령에 따라 segment 가 암시적으로 선택된다
>> Explicit Segment 지정
>>> Instruction prefix가 특정 segment를 사용중임을 요청
Segment 구현

> Segment table은 특정 프로세스 내의 모든 segment를 기록
>> 각 entry는 base 와 limit을 가진다
>> 각 entry는 protection information을 가진다
> HW support 필요
>> 여러개의 base & limit register
>> Segment table base pointer
Segment Table Example
> Part of Segment Table

> Address Space Mapping

Managing Segments
> 프로세스가 생성되면...
>> 해당 프로세스의 모든 segment 에 대해 가상 메모리에 공간을 할당 받는다
>> Segment Table 생성해서 PCB에 저장해 둔다
> Context Switch 발생시...
>> OS의 segment table을 old process's PCB에 저장
>> 새로운 프로세스의 PCB에서 OS의 segment table을 로드하며, 물리적 메모리를 할당한다
<프로세스가 처음으로 실행될 경우>
> 만약 물리적 메모리 공간이 부족할 경우
>> 연속적인 공간을 만들기 위해 compact memory
>> 공간이 충분할 때 까지 다른 segment들을 swap out
>> 해당 프로세스를 다시 실행하려면 모든 segment를 다시 swap in 시켜야 한다
> Segment 크기를 늘리려면
>> Segment 위의 공간이 free하다면, segment의 limit을 update
>> Segment 를 더 큰 free space 로 옮긴다
>> 해당 segment 위의 다른 segment를 swap out
>>
> Segmentation Advantage
>> Segment 끼리 연속적이지 않아도 된다.
>> Segment 들은 개별적으로 swapped 될 수 있다
>> Segment는 공유될 수 있다
> Segmentation Disadventage
>> 메모리 할당이 복잡하다
>> external fragmentation (공간중 작은 공간이 분산되어 있는상태)
'OS' 카테고리의 다른 글
| OS: File System (0) | 2023.06.06 |
|---|---|
| OS: Paging (0) | 2023.05.23 |
| OS: Dynamic Relocation (0) | 2023.05.23 |
| OS: Memory Management (0) | 2023.05.16 |
| OS: Deadlock Avoidance (0) | 2023.05.16 |