9.2모든 메모리 엑세스 작업에 대해 페이지 테이블은 유사한 페이지가 상주인지 아닌지 그리고 페이지 접근 하기위해 프로그램이 읽기나 쓰기 특권을 가지는지 확인하기 위해 고려되는 것을 요구한다.이런 확인은 하드웨어 안에서 수행되어야 할 것이다. TLB는 cache 처럼 공급할 수 있고 검사 연산의 수행을 개선할 수 있다.9.4☞virtual memory에서 page size가 4,096 = 212 이므로 offset 은 12 bit 차지하게 된다. 32bit 중의 20bit는 pagenumber로 사용된다. 그리고 physical memory는 218 이고 page offset이 12bit 차지하므로 6bit만 physicalframe number로 쓰인다. 즉, physical page의 개수는 64개이다.user process가 11123456 ( 0001 0001 0001 0010 0011 0100 0101 0110 )을 generate했다면, 하드웨어적으로앞에서부터 20 bit를 virtual page number로서 page table에서 검색한다. 그 page가 valid하면 physicalmemory에 있으므로 그대로 execute되지만, 그 page가 invalid하면 page fault trap 이 생겨 os에게 알린다.소프트웨어적으로 os는 new free physical frame을 찾고 없다면 page replacement에 의해 free frame에 그page를 disk IO scheduling한 후 읽어들인다. 이제 참조하려는 page가 physical memory 상에 있으므로interrupt된 user process를 다시 시작하게 된다.9.6만약 포인터가 빨리 움직이면 프로그램은 동시에 페이지의 큰 숫자로 접근한다. 비트에 해당하는 페이지에서 포인트가 지워지고 그것이 다시 확인되는 사이의 기간동안은 가장 유사하다. 페이지는 다시 접근되고 그러므로 대체될 수 없다. 이것은 희생 페이지가 발견되기 전에 페이지의 스케닝 안에서 생긴다. 만약 포인터가 느리게 움직이면 가상메모리시스템은 극도로 효과적인 대체를 위해 후보자 페이지를 찾는 것이며 그것은 많은 상주페이지는 엑세스되지 않는 것을 가리킨다.9.8메모리안에서 4개 페이지를 멈추게하는 시스템안에서 순서를 고려해라 : 1 2 3 4 4 4 5 1. 대부분 자주 사용하는 페이지 대체 알고리즘은 5페이지를 4페이지를 꺼내는 동안 쫓아낸다. 반면에 LRU알고리즘은 1페이지를 쫓아낸다. 이것은 연습 안에서 많이 일어나는 것과 유사하지 않다. 이런 “1 2 3 4 4 4 5 1” 순서를 위해 LRU알고리즘은 읋은 결정을 만든다.9.10☞시스템은 memory 할당을 하는데 paging 시간에 많은 시간을 할애한다. multiprograming의 정도가 낮으면page fault는 줄어들고 cpu utilization은 높아진다.(다중 프로그래밍이 높을수록 cpu 사용효율이 증가하지만어느 정도를 넘게 되면 오히려 사용효율이 떨어진다.-> thrashing 발생)시스템의 수행을 향상시키는 또 다른 방법으로는 physical memory를 더 크게 한다거나 paging drum을 더빠르게 하는 방법이 있다.a. Install a faster CPU.☞ CPU 가 빠르면 page fault 발생 빈도가 더욱 빨라지게 되어 utilization은 감소할 수 있다.b. Install a bigger paging disk☞ secondary storage인 disk의 크기가 크다고만 해서 CPU utilization에 영향을 주지 못한다.c. Increase the degree of multiprogramming.☞ degree가 증가할수록 memory 사용 크기가 작아지므로 utilization을 감소시킨다.d. Decrease the degree of multiprogramming.☞ degree가 감소할수록 memory 사용이 상대적으로 커져 utilization이 증가한다.e. Install more main memory.☞ main memory가 커지면 메모리에 page 가 증가하고 page fault가 나서 disk에 접근하는 일이 줄어들 것이므로 cpu utilization이 증가된다.f. Install a faster hard disk, or multiple controllers with multiple hard disks. .☞ 빠른 응답과 빠른 처리율로 인해 dist 병목현상 같은 것이 사라지고 cpu 는 더 빠르게 data를 가져올 수 있어 cpu utilization이 증가할 수 있다.g. Add prepaging to the page-fetch algorithms.☞ cpu는 더 빠른 속도로 data를 가져 올 수 있어 cpu 사용률은 증가 한다.h. Increase the page size.☞ page access가 연속적으로 일어난다면 page fault가 적게 일어나 효율적일 수 있는데, 랜덤하게 pageaccess가 일어난다면 memory상의 page수가 적기 때문에 page fault가 많이 일어나 비효율이 될 수 있다.page size가 증가함에 따라 memory 에는 page 수가 줄어들고 page fault가 일어날 경우 더 많은 data가전송된다. page size 증가는 cpu utilization의 감소를 가져온다.9.12☞이 교체정책을 사용함으로써 가장 최근에 많이 사용된 것들이 계속 남아있고 사용되지 않는 것들은 바로내보내 질수 있게 된다. 그렇지만 한번만 사용하고 쓸모가 없는 페이지들이 마지막 테스트에 우연히 걸리게 된경우에는 다음 테스트 전까지 물리적 메모리에 쓸모없이 남아있게 되어 다른 사용빈도가 높은페이지들이 swapping 되는 경우가 발생할 우려가 있다.9.14☞Access Time = (0.8) * (1 microsecond) + (0.18) * (2 microsecond) + (0.02) * (20002 microsecond)= 401.2 microsecond= 0.4 millisecond9.16맞다. 사실 많은 프로세서들은 이 대단한 동기를 위해 두 TLB를 제공한다. 한 예로써 프로세스로부터 접근되어지는 코드는 긴 시간의 기간 동안 아마도 같은 작업 집합을 얻는다. 하지만 데이터 코드는 어떤 변화를 엑세스한다. 그래서 데이터를 엑세스 하기 위해 작업 집합 안에서 변화를 반영한다
8.2 편집기는 마지막 이진 프로그램 안에서 관련된 실제 주소와 함께 해결되지 않은 상징적인 주소를 교체해야 한다. 이 수행을 하기 위하여 모듈은 해결되지 않은 부호를 나타내는 명령의 트랙을 유지해야 한다. 연결하는 동안 각 모듈은 전반적인 이진 프로그램 안에서 주소의 순서로 할당된다. 그리고 이것이 수행될 때 해결되지 않은 참조는 다른 모듈들 안에서패치된다. 모든 다른 모듈들은 패치되기 필요한 명령의 리스트를 포함할 것이다8.4 연속적 메모리 할당 : 할당된 메모리공간이 자라기 위한 프로그램에 대해 충분하지 않은 공간이 있기 때문에 프로그램 전체의 재배치를 요구한다.순수 세그먼테이션 : 할당된 메모리공간이 자라기 위한 부분에 대해 충분하지 않은 공간이 있기 때문에 확장되기 필요한 부분의 재배치를 요구한다.순수 페이징 : 프로그램 주소 공간의 재배치 요구없이 이 계획 안에서 새로운 페이지의 증가적 할당은 가능하다8.6 paging system에서 주소는 페이지 번호와 페이지 오프셋(offset)으로 나타낸다. 페이지 번호는 페이지 테이블을 참조하는 색인으로 활용되며, 이를 통해 이 페이지가 할당되어 있는 frame을 알 수 있다. 운영체제는 주기억장치를 관리하므로 할당의 자세한 내용을 알고 있어야 한다. 이를 위해 프레임 테이블 을 유지해야 한다. 운영체제는 각 프로세스마다 페이지 테이블을 유지하며, 프레임 테이블에는 실제 프레임마다 하나의 항이 존재하며 어떤 프로세스의 몇 번째 페이지가 할당되어 있는지를 유지한다.이 페이지 테이블은 보통 PCB에 유지되며 문맥전환을 할 때 필요하다.8.8 1) 연속적인 메모리 할당은 실행을 시작할 때 프로그램을 위한 가상 주소 공간의 전체의 크기를 할당하기 위한 운영체제를 요구한다. 이것은 프로세스의 실제적인 메모리 요구보다 더 높아 진다.2) 순수 세그먼테이션은 작은 크기를 부여하기 위해 프로그램이 시작되는 시간에 각 부분에 운영체제 적응성을 주고 필요하다면 그 부분을 확장한다3) 순수 페이징은 시작되는 시간에 프로세스에 가상 주소공간의 최대 크기를 할당하기 위한 운영체제를 요구하지 않는다. 그러나 순수 페이징은 여전히 모든 프로그램의 가상 주소 공간에 걸친 큰 페이지 테이블을 할당하기 위한 운영체제를 요구한다. 프로그램이 스텍이나 히프를 확장하는 것을 필요로 할 때 이것은 새로운 페이지 할당을 필요로 하지만 상응하는 페이지 테이블 입력은 미리 할당된다.8.10 segment가 너무 가변적인 길이고 때로는 그 크기가 지나치게 주기억장치에 적재할 수 없는 경우가 있을 수 있다는 문제점을 극복하기 위해 하나의 segment를 정수 배의 부분으로 페이지로 다시 분할하는 페이지/세그먼트 혼용 기법을 제공한다.8.12 a. 0430☞219 + 430 = 649b. 110☞2300 + 10 = 2310c. 2500☞illegal reference; traps to operating system (표현할 수 있는 범위가 넘는다.)d. 3400☞ 1327 + 400 = 1727e. 4112☞ illegal reference; traps to operating system (표현할 수 있는 범위가 넘는다.)8.14 메모리 로드 연산이 실행될때 실행될지도 모르는 세가지 메모리 연산이 있다. 하나는 페이지가 찾아지기 위해 페이지 테이블 입력 위치를 바꾸기 위한것이다. 두 번째 접근은 스스로 페이지 테이블 입력을 접근하기 위한것이다. 반변에 세 번째 접근은 실제 메모리 로드 연산이다.
7장2. a. 데드락을 위한 4개의 필수적인 1)상호 배재: 2)잡고 기다리기: 3)선취와 4)순환 기다림은 없다. 상호 배제 조건은 지배한다/ 오직 한 차가 길에서 공간을 차지할 수 있기 때문에 그들이 길에서 진입하기위해 기다리는 동안 hold-and-wait는 길에서 차가 그들의 장소를 지배할 때 일어난다. 차는 길에서의 포지션에서 제거될 수 없다. 예를들어 선취. 마지막으로 거기엔 정말로 순환 기다림이 있다 각각의 차가 순서대로의 진입을 기다리고 있기 때문에 순환 기다림 조건은 또한 그래픽에서 쉽게 관찰된다.4. 교착상태는 4개의 필수조건이 다음의 방법을 따르고 있기에 가능하다.1) 상호배제는 젓가락을 위해 요구된다. 2)철학자들은 그들이 다른 젓가락을 기다리는 동안 손에 젓가락을 드는 경향이 있다 3) 젓가락 선취란 없다. 철학자에게 할당된 젓가락이 강제적으로 빼앗기지 않는다라는 관점에서 4)순환기다림이 가능하다 교착상태는 다음의 방법을 극복하는 방식으로 피할수 있다. 1)젓가락의 동시공유의 허용2) 만약 철학자들이 다른 젓가락 얻기가 불가능하다면 첫 번째 젓가락을 표기시켜라. 3)만약 철학자가 긴시간동안 젓가락을 가지고 있다면 젓가락으 빼앗기는 것을 허용하라 4)젓가락 숫자세기를 강요하고 가장높은 숫자를 얻기전에 항상 가장 낮은 숫자를 얻어라.6. 이 정책은 좋은 해결책이 아니다. 왜냐하면 그것은 너무 큰 범위를 양보하기 때문에 locking 정책을 가능한한 좁은 범위로 정의하는 것이 낫다.8. 교착상태회피기법은 현재의 자원할당의 가격 때문에 runtime overhead를 증가시키는 경향이 있다. 그러나 교착상태회피기법은 통계적으로 교착상태의 형성을 막는 기법보다 동시에 발생하는 자원의 사용을 허락하낟. 그러면에서 교착상태회피기법은 시스템 작업량을 증가시킬 수 있다.10. a ->아무문제없이 완전히 바뀔 수 있다.b-> 이것은 시스템에 영향을 미칠 수 있고, 시스템의 안전이 가능한 자원의 특정 숫자가 있다고 가정되듯이, 교착상태의 가능성을 소개할 수 있다.c->시스템에 영향을 미칠 수 있고 교착상태의 가능성을 소개할수 있다.d->이것은 아무문제없이 안전하게 바뀔 수 있다.e->이것은 자원이 새로운 프로세스에 할당되어 시스템이 불안전한상태에 들어가지 않을 것이라고 가정될 t ndlT다.f-> 아무문제없이 바뀜.12.시스템이 교착상태에 있다고 가정해보자. 이것은 각프로세스가 한 자원을 가지고 있고 한 개더를 기다리고 있다는 것을 암시한다. 3개의 프로세스들과 4개의 자원이 있기에 한 프로세스는 2개의 자원을 가지고 있어야한다. 이프로세스는 더 이상의 자원을 필요로 하지 않는다. 그리하여 그것은 다되면 그것의 자원들은 반환할 것이다.14. 따라오는 규칙들은 교착상태를 방지한다: 철학자가 첫 번째 젓가락에 대해 요청하면 2개의 젓가락을 가진 또 다른 철학자가 없을 경우에는 오직 1개의 젓가락만 남아있을 경우엔 그 요청을 만족시키지 말아라.16. 철학자가 젓가락 한 개를 요구할 때 그 요규를 할당해라. 만약 1)철학자가 2개의 젓가락을 가지고 있고 적어도 1개의 젓가락이 남아있을 때 2)철학자가 1개것가락을 갖고있고 적어도 2개젓가락 남아있을 때 3)적어도 1젓가락 남아있고 적어도 1철학자가 3개젓가락 갖고있을 때 4)철학자 젓가락 없고, 2젓가락 남아있을 때. 적어도 다른 한 철학자가 2젓가락을 할당받을 때.18. 그리고 자원 A,B,C와 프로세스 p0,p1,p2,p3,p4 그리고 Allocation 의 값들로 시스템을 고려해라.Need 값들:Available의 값이 (2,3,0)이면, 우리는 프로세스 p0으로부터 (0,2,0)의 요청은 만족될 수 없다. 이것이 Available을 (2,1,0)까지 낮추고 어떤 프로세스도 안전하게 끝날 수 없기 때문이다.그러나 우리가 3자원들은 banker의 알고리즘의 3개의 단일 자원형태로 처리한다면 우리는 다음의 결과를 얻는다.