일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Linux
- nomaltic place
- 기초
- shell
- Error
- MariaDB
- 칼리 리눅스
- kali linux
- 네트워크
- Vitual Disk Image
- VDI
- 노말틱
- Normaltic
- nomaltic
- Virtual Box
- Web shell
- Bandit
- 칼리
- 보안
- Bitnami
- 리눅스
- mysql
- virtualbox
- 리눅스 기초
- kali
- Today
- Total
목록cs (30)
게으른 개발자

Segmentation segment table의 최대 entry개수는 프로그램이 사용하는 세그먼트 개수이다. 페이징 기법은 페이지의 개수가 백만개(굉장히 많다) 테이블을 위한 공간 낭비가 심하다. 장점 allocation 단점 protection sharing 세그먼트 실제 시스템을 운용해보면 개수가 작다. 테이블 메모리 낭비가 작다. 장점 protection sharing 단점 allocation Segment와 page를 혼합해보자 세그먼트 하나가 여러개의 페이지로 구성이 됨. 먼저 세그먼트에 대한 주소변환을 한다. STBR : 여기 레지스터에 세그먼트에 대한 시작위치가 저장되어 있다. 메모리에 올라갈 때는 page 단위로 쪼개져서 올라간다. 이렇게 하면 allocation 문제가 안생긴다! hol..

page table을 2단계만 쓰는 게 아니라 다단계를 쓸 수 있다. 프로그램의 주소공간이 넓기 때문에, 3단계, 4단계 여러 단계 page table을 사용하는 게 가능 page table을 위한 공간을 많이 줄일 수 있다. 그러나 한번 주소 변환을 하려면 page table을 여러 번 거쳐야 한다. page table이 물리적인 메모리상에 있기 때문에 메모리에 한번 접근하기 위해서(4단계 테이블 일 때) 주소 변환을 위해서 메모리에 4번 접근해야 한다. - ( 4회 주소 변환 ) 그리고 주소 변환을 한 다음에 실제로 원하는 데이터를 접근하기 위해서 또 메모리 접근을 해야 한다. - (실제 데이터 접근) 따라서 메모리 한번 접근을 하려면 총 5번의 메모리 접근이 필요하다. 그러나 대부분의 주소변환은 T..

Noncontiguous allocation page 프로그램을 구성하는 메모리를 동일한 크기의 page로 잘라서 각각의 page 별로 물리적 메모리의 적당한 위치에 올라갈 수 있게 해 준다. page table page 기법에서 주소 변환을 위해서 사용된다. 논리적인 page 개수만큼 entry(명부, 명단?) 이 존재한다. entry는 테이블(배열)에서 사용하는 용어이다. 테이블(배열)은 인덱스를 이용해서 곧바로 접근할 수 있는 자료구조이다. 각각의 논리적인 페이지들이 물리적인 메모리에서 어디에 올라가 있는지 위치를 저장함. 논리적 page 번호 물리적 page frame 번호 logical memory code , data , stack으로 구성됨. 중간에 메모리가 사용이 안되는 공간이 많이 존재한..

메모리 관리 프로그램이 실행되면 독자적인 주소공간이 생성된다. 논리 주소 = 가상 주소 각 프로세스마다 0번지부터 시작 물리적 주소 symbolic address 프로그래머가 코딩을 할 때, 숫자로 된 주소를 사용하지 않고 symbol로 된 주소를 사용한다. 컴파일이 되면서 숫자로 된 주소가 만들어진다. 컴파일 타임 바인딩 주소 변환이 컴파일할 때 이루어짐. 컴파일을 새로 하면 주소가 바뀜 absolute code load time binding 실행이 시작될 때 주소 변환이 이루어짐. relocatable code 비어있는 위치는 실행 시에 어느 위치든지 올라갈 수 있다. execution time binding = run time binding 프로그램이 시작된 이후에도 시작하다가 중간에 물리적인 메..

sequence P1이 가용 자원을 사용하여 작업을 마치고 자원을 반납하게 되면 P3를 처리할 수 있게 된다. 이런 식으로 sequence가 존재하면 그 시스템은 safe state라고 한다. deadlock이 생기지 않는 상태이다. 그러나 굉장히 비효율적이다. 사실 deadlock은 거의 안 생긴다.! Deadlock avoidance는 항상 safe state를 유지한다. safe 하다는 의미는 현재 남아있는 자원만 가지고도 충분히 프로세스를 끝낼 수 있다는 의미. safe 상태에서 가용 자원만으로 충족되지 않은 자원을 줬다고 해서 문제가 되는가? 여기서 말한 충족의 의미는 Need

Deadlock : 각자 일부 자원을 가지고 있고 자원을 주지 않으면서, 상대방의 자원을 요구하는 경우 Deadlock 문제 example 1) 프로세스가 하려는 일 : 하나의 테이프 드라이버에서 읽어서 다른 테이프 드라이버로 copy 하는 것.(하드웨어 자원을 기다리면서 deadlock이 생긴 일.) 두 프로세스가 각각 테이프 2개를 점유해야 작업이 가능하다. 상대방의 자원을 요구하면 deadlock 발생 example 2) 2개의 프로세스가 lock을 거는 semaphore를 획득해서 일을 하고 싶어 함.(소프트웨어 자원을 기다리면서 deadlock 발생) 프로세스 0 : A를 먼저 획득한 다음에 B를 획득하려는 상황에서 cpu를 빼앗김 프로세스 1 : B를 먼저 획득한 다음에 A를 획득하려는데, 이..

프로세스 동기화 (process synchronization) = 병행 제어( concurrency control) 모니터의 역할 active 한 프로세스가 하나만 모니터 안에 있는 코드를 실행할 수 있게 한다. 프로그래머는 공유 데이터를 접근할 때, lock을 신경 쓸 필요가 없어진다. 예시 A 프로세스가 모니터 안에 와서 공유 데이터를 접근하는 코드를 실행하고 있을 때, cpu를 빼앗겼다. B 프로세스가 모니터를 접근하는 코드를 들어오려고 한다. 그러나 A 프로세스는 active 한 상태로 모니터에 남아있다. 그래서 B 프로세스는 모니터안에 있는 코드를 실행시키지 못한다. 모니터 밖에 있는 큐에서 기다리게 된다. 그러면 언제 모니터 내부에 들어올 수 있는가? 1. 모니터 안에 있는 active 한 프..

주황색이 데이터가 들어있는 버퍼 mutual exclusion : 상호 배제 Shared data lock을 걸고, 풀고 해서 접근을 해야 한다. Synchromization variable binary semaphore ex) mutex = 1 ---> lock을 거는 semaphore 변수 integer semaphore ex) empty = n, full = 0 p : 자원을 획득, v : 자원 반납 write : 동시에 하면 안 됨. 아무도 없을 때만 배타적으로 해야 함. read : 동시에 해도 됨. 공유 데이터를 접근할 때는 lock을 걸어서 다른 프로세스의 접근을 막고 작업을 한 뒤에 lock을 풀어야 한다. 읽을 때도 lock을 걸어야 함. writer 가 접근할 수 있기 때문이다. rea..