alt

운영체제 5-13 Virtual memory management.m4a

Shared on May 13, 2026

00:00:00

이제 이 때 어색하지? 애틋하게 생각해. 진정 나가지. 감을 쓸 수 없잖아. 자, 보면 저 밑에 우리 포츄 메모리 메리즈먼트가 필요한 부분을 필요한 이유는 나와있지?

00:00:21

다양한 이슈들이 여러가지 이슈가 나오는데 그 이슈의 근본적인 이유는 피지컬 메모리가 제한될다는 것이에요. 멀티태스킹, 멀티프로그래밍의 디그리라는 것은 실행되는 프로세스의 개수가 늘어나면 늘어날수록 메모리가

00:00:43

메모리가 많이 요구되겠지. 많이 요구되는데 이제 그렇다고 많이 요구되는데 실행되는 프로세스 숫자를 제한할 수는 없잖아 그렇지. 제한할 수는 없으니까 어떻게든 소프트웨어적으로 이 문제를 해결해야겠다 그렇지. 그러니까 이 버츄어 메모리 매니지먼트는

00:01:04

OS 커널에 있는 지원되는 부분을 보급되고 앞쪽 챕터는 메모리 매니지먼트는 하드웨어 CPU 관점에서 하드웨어 프로세서 관점에서 보체 메모리 지원하는 부분을 설명하지만 이번 챕터는 소프트웨어적으로 메모리가 부족할 때 생길 수 있는 현재를

00:01:28

문제는 해결하겠다. 이렇게 합니다. 자, 이래서 다음 장을 보면 이제 메모리 사용 패턴, 패턴 넣어져. 이 패턴을 보면 우리가 프로그램을 구현하고 실행하다 보면

00:01:49

큰 프로그램은 이 부분만

00:01:59

자, 나를 말해. 나를 말해. 이런 코딩을 하다 보면, 큰 프로그램을 보면 당연히 많은 함수들을 사용하고 하는지 많은 함수를 사용하다 보면, 이게 딥셉션 함수도 있겠죠. 딥셉션 처리하는 코드가 있을 거고, 어떤 단위가 많은 함수도 있을 거예요.

00:02:23

그러면 실현하다 보면 어떤 인풋에 대해서는 어떤 정해진 함수들만 사용되지 정해진 함수들은 사용되지 않고 있지 그렇지. 그래서 모든 인풋을 다 처리하게 되는 경우는 모든 함수들이 다 수정되어 있지만 이제 정해진 인풋에 대해서는 자주 들어 많이 사용되는 인풋에 대해서는

00:02:46

코드가 수행 안된 코드가 많아야 되겠지. 자 또 다른 예는 여러분들은 아래 한글 아래 한글 실행하지. 아래 한글 실행하다 보면 저게 매니폼 맞춰요. 매니폼은 매니폼 중에 맞춰요. 자 그럼 여러분들이 사용하는 코드 아래 한글 사용할 때는 타잉하고 타잉하고

00:03:06

그리고 글자 크게 조절하고, 색깔 조절하고 그런 다음에 나중에 제작할 때 그 정도로 끝내줘겠지. 그런데 그러면 다양한 메뉴를 지금 보면 안 사용하는 메뉴를 많이 찍었지. 각각의 메뉴에 대해서 다양한 코너들이 있겠지.

00:03:28

그렇지만 일반적으로는 프로그램을 실행하면 사용도 없는데 1분만 사용되고 사용도 없고 코너가 많다. 그러면 다 되죠.

00:03:44

빨리 가야겠다. 예를 들어서 첫번째 예를 들어서 입술적 코드. 예를 들어서 입술적이 발생하지 않으면 절대 입술적 코드가 실행되지 않겠죠.

00:04:04

그리고 너를 아주 큰 시한 너를 계산하게 되는데 어떤 동작을 실행하다 보니까 그 큰 배려 중에 일부분만 상대수도 있겠죠. 그래서 이제 나오는 게 이렇습니다.

00:04:25

중요한 문제는 프로세스를 실행할 때 이 부분만 사용될 프로그램을 시작할 때 전체를 다 로딩하면 너무 화제된다.

00:04:47

너무한단 말이고 에디트에 대해 너무하냐 하면 메모리에도 부담도 있고 그리고 디스크에서 전체 프로그램을 로드할 때도 부담도 주지. 그 말은 로드할 때 시간을 떠버리게 되겠지. 그럼 문제가 있다.

00:05:10

문제가 있다. 그래서 한 번 예를 들어서 여러분들 RIMB 실현 하재 RIMB 실현하고 나면 크기가 좀 커졌지? 한 기각 아닌가 보다 하재? 반면이 터치하면은요. 그러면 RIMB 실현할 때 그러니까 기간을 다 메모로 로드하면

00:05:31

수단이 힘들겠죠. 상당히 더욱 끓인 것 같아요. 실행할 때 가장 기본적인 화면. UI에 대해서만 그래프를 사용하고 실행시키기 시작하잖아요. 그래서 터치한 메뉴를 선택할 때마다 필요한 코드만 올리겠다. 그게 뭐냐면

00:05:55

이러면 Defender Paging. 이거 Paging이라고 하는데 이거라고 보면 Needs. 필요할 때만 올린다. 메모리로. 이게 Defender Paging. 굳이 전체 프로그램을 메모리 상에 로드할 필요가 있겠냐.

00:06:22

만약에 이 빨간색 부분처럼 메모리에 이 부분만 올려놓고 실행할 수 있으면 신화서를 쓰면 좋을텐데요. 메모리 공간의 효율성도 높아질거고 그리고 아이오 횟수를 줄여서 프로그램을 제2차 시작할 때

00:06:43

시작할 때 속도도 빠르게 하셨다. 이제 디멘트 페이지입니다. 그래서 보면 이점, 첫 번째 이점은 페이직한 네버리 공간을

00:07:05

그러니까 합포할 수 있겠죠. 좀 더 효율적으로 사용할 수 있다. 두 번째는 뭐. 그러니까 이 부분에 메모리만 프로세스가 사용하기 때문에 동시에 돌아갈 수 있는 프로세스의 기회도

00:07:28

그 정도 그만큼 늘어야지 그렇지. 그리고 모두 다 있다. 모두 다 한 방에 로드 한다. 그리고 맨 프로젝트 한 방에 로드 한다. 각각 사용하는 메모리가 2기가다. 처음으로 얘기할 때. 메모리가 2~3기가 밖에 안 되면 신어날 수 있는 포세스 개수는 3개 밖에 안 되겠죠.

00:07:53

필요하러 하는 내용만 로드하우 할 때 필요가 있는 것 같다. 미국만으로 로드하우는 것 같다. 여러 개 동시에 많이 붙였다. 동시에 들어왔어. 세 번째는 아이오가 강력이 줄어들어 있었다. 이기가 제 심신할 때 전체 프로그램이 이기가 오를 때 아이오이 너무 신하게 많이 일어났는데

00:08:20

시작할 때 의미가 있는 것만을 들이면 완료 횟수가 줄어들지 않죠. 자 그런 이점이 있고

00:08:31

자 그래서 거의 꼬리지 어릅니까? 좀 어린다고요? 네 처음에 진행하시면 좀 어린다고요 지금 이거 합방 사용해도 되죠? 네

00:08:52

-뭐야?

00:08:53

- 연습할 수 있고. - 자 그리고 회기에 보면.

00:08:58

파일은 문서에서 실행 파일을 실행할 때 이제 뭘 하냐면 EXEC 엑뉴스

00:09:05

시스템크를 할 때, 바이네리 파일을 실행하는 홈스에요. EBS EC에 8.9. 이것을 입력을 넣게 되요. 그러면 이제 프로세스는 8.9을

00:09:27

파워스를 실행할 겁니다. 그러면 ex ex v를 실행하게 되면 우리가 적은 실행에 대한 코드 텍스트가 있겠지 그리고 여기에 btab 섹션이 있었고 bss 탁션이 있었고

00:09:50

Wiesz co? Wiesz co? Wiesz co?

00:09:56

올리는 게 안 됐지. 올리는 게 아니고 단지

00:10:00

택트 영역 택트 세금한테 되는 거죠. 그렇지? 세금한테 안 되지? 그니까 볼체메모리상에서 색상을 올라오게 되면 세금을 되냈어요. 세금한테. 그리고 데이터 세금한테. ESS 세금한테. 이 때 몇피가 시키면 해야 되지? 몇피. 그러니까 데이터를 메모리상으로

00:10:23

전혀 영상으로 올리지 않고 단지 맵핑을 시켜줍니다. 맵핑탭은 이렇게 드리는 게 있어요.

00:10:33

0번, 2번, 2번 이렇게 되어있고 여기 페이지도 0번, 1번, 2번 0번에는 택스가 들어있고 1번에는 차가, 다 차지 못할게요 그럼 이번에는 BSS 사용이 들어있고 그리고 위기장으로 해야 돼요

00:10:55

이렇게 보면 얘도 크기가 0부터 뭘까? 만번째까지입니다. 4K 갑시다. 4, 0, 9, 6. 여기는 8, 0, 8, 1, 8. 4K 갑시다.

00:11:16

4k, 4k, 8k, 12k, 12k 갑시다 그러면 tact는 0부터 4k까지 결과 data는 4k부터 8k까지 이게 8 내에서 없으신지

00:11:37

가사가 이렇습니다. 가사가 이렇습니다. 얘는 파이 오프셋.

00:11:46

0부터 4K까지는 파일을 어느정도 싣다 0부터 4K까지는 그리고 데이터는 4K부터 4K까지는 안 돼요 안 돼요 더 다음 수정에 있어야겠어요

00:12:08

오늘 조절입니다. 맞지? 방금 지금 마셔도 되나? 얘는 가상을 드릴 수 있어요. 영문지부터 영문지부터 내림부터 나 있어요. 감사합니다.

00:12:32

00:12:34

가사가 되어있어서 테드트 페이지는 어디서부터 어디까지 나타나는 거다. 그리고 이 타면 어디서부터 어디까지 나타나는 거다. 그 이야기를 하고 있어요. 그렇다면 이 영역의 테드는 빨에서 어느 위치에 있냐 나타내고 있어요.

00:12:55

몇이 있느냐. 그 다음은 TACT는 파이너스에서 4K까지 그리고 데이터는 4K부터 8K까지 그리고 BSS는 8K부터 12K까지 이렇게 있다고 다 알지. 이런 랩핑 테이블이 그대로. 그러니까 존재한 거예요. 각 실행 파일드에서.

00:13:17

아시, 이게 메모리 상에 저장된다. 노트 할 때, 실행할 때, 이런 테이블을 만들어버린다. 대신 페이지 테이블은, 페이지 테이블은 어떻게 되냐면

00:13:40

페이지 탭은 0번 프레임은 지금 없다. 프레임 없어요. 1번 2번 3번 페이지 탭을 제시맨을 로드했을 때는 실행 파일의 내용이 매물상에 올라오지 않았다.

00:14:25

그러니까 메모리상 지금

00:14:28

실행 파일의 내용이 아무도 안 올라왔다는 겁니다. 그러니까 이제 프렘너머도 안 적혀져 있고 그리고 베이드비트도 0이다.

00:14:41

뒤에서 빈칸을 한번 볼텐데요. 그 다음 빈칸이 된대요. 그 빈칸 부분에 지금 그림을 그리면 되요. 알겠죠? 지금 그 생각 빈칸 부분에 알겠죠? 자 그런 다음에 이제 본격적으로 프로그램을 구동합니다. 본격적으로 프로그램을 구동해요. 자 이쪽에 메일항사 있겠죠? 이쪽 부분에.

00:15:07

메인항수에 메인항수를 실행합니다. 메인항수는 실행하면 텍트 커브를 딱 찍어 하겠지 리드, 리드 할거지 텍트 안에 메인이 있으니까 메인을 딱

00:15:28

그러니까 그 내에서 말해 어떻게 해 면 면 페이지 탭을 할 때 아 지금 택트가 페이지 영원이다 폐경 보는데 제 폐지에 대해서 받더니 아 배리드에 맞죠 그러면 딱 뭐 사자면 이제 cpu가

00:15:50

그리고 페이지 폰트 유출장 가서 할게요. 페이지 폰트는 뒤쪽에서 다음 장입니다. 다시 여기다. 내가 수업을 안하고 싶어도 또 보강해야 될까 그런게 아니겠지.

00:16:12

그러니까 써먹을 수 밖에 없어지지요.

00:16:23

진도를 많이 못나겠네

00:16:28

자, 저기 저기에

00:16:30

10쪽. 10쪽 보면 뭐가 있으세요? 페이지 포트라는 이야기는 뭐지? 페이지 포트라는 포트가 뭐지? 포트란 말 꼬는 거 있지. 페이지 포트가 발생한다는 말은 어떤 특징한 페이지가 적극됐는데

00:16:54

해당하는 페이지가 네모사에 올라오지 않다. 즉, 베리필드필터가 0. 0이면 페이지 폴트가 발생하다. 페이지 폴트가 발생하게 되면 CPU는 페이지 폴트 입착션을 바꿔주기 바랍니다.

00:17:16

페이지포트 익셉션이 발생하면 OS 내에 페이지포트 익셉션 핸들러 11쪽 보면 1번 cpu가 페이지포트 발생했다

00:17:36

페이지가 있는지 검색했다. 페이지 폴드에 발생했다. 페이지 폴드에 발생했다. 페이지 폴드에 발생했다. 페이지 폴드에 발생했다. 페이지 폴드에 발생했다. 페이지 폴드에 발생했다. 페이지 폴드에 발생했다. 페이지 폴드에 발생했다. 페이지 폴드에 발생했다. 페이지 폴드에 발생했다. 페이지 폴드에 발생했다.

00:17:59

그러면 계산 관련 플로팅 포인트 입척천 발생할 수 있고 그리고 페이지 포인트가 발생하면 페이지 포인트 입척천 발생할 수 있죠. 각각 입척천에 대해서 처리해야 할 함수들이 증여되어 있어요. 증여되어 있는데 페이지 포인트 입척천이 발생하면 페이지 포인트 입척천 핸들러가 구동백이 되요.

00:18:21

3번에 보면 페지포트 핸들러가 구동되요. 페지포트 핸들러 내에서 다음 동작이 이루어집니다. 다음은 뭘 하냐면, 지금 페지포트 핸들러 안에서는

00:18:45

지금 페이지 0번이 메모사에 없다. 메뉴드가 있는데 이 0번이 혹시 처음에 맵핑을 거쳐 메모리하고 파일로 맵핑됐는지 아닌지 검사했지. 검사할 때 어떻게 아 지금 0번이라는 페이지가

00:19:07

명사의 페이지가 명분자 4K부터 명분 영역이고 HMOS의 파일에 명분 명분자 4K, 그러니까 영역이 맵핑되어 있네 라고 그를 확인합니다. 확인했더니

00:19:29

이제 한계제 하여서 사킬 범위 유니만의 매팅 된 이라는 할인 했죠 하늘에서는 이제 어떻게 파슴 템이 여기서 빨리 시켰어 맞아서 요

00:19:52

로드하그네도 어떻게 되죠? 페이지탭을 업데이트해야 하는거지 페이지탭을 업데이트해야 하는거지 로드된 메모리가 어떤 특정한 대표다 D램성의 백번 프레임이

00:20:13

내가 놓을 때 땅지에 그러면 얘는 여기서 일로 바뀌어 줘야 되겠죠. 일로 바뀌어 줘야 되겠죠. 일로 바뀌어 주고 그러니까 다시 정지된 프로세스를 시작시키면 되겠죠.

00:20:32

다시 합니다. 페이지포트 핸들에 대해서 지금 페이지포트가 왜 일어나는지에 대한 검사를 안했죠. 원인을 추적합니다. 원인을 추적했는데, 지금 특정한 벌칙 메모리와 파일하고 맵핑되어 있네요.

00:20:53

맵핑장에 있는 것을 확인한 다음에 지금 팩이 온 것은 A.Mouse에 0.0에서 4K이니까 데이터하고 코드랑 연계되어 있네 그래서 얘를 덜 올려야 되겠다 메모를 로드하겠다 판타가 있는 것이 그렇지 그래서 메모를 덜 올린다

00:21:16

그래서 페이지 테이블을 업데이트한다. 그러니까 올라오 페이지가 위치에 메모리 디램에 프렌드 번호 100번 하고 그리고 페이지 테이블의 베리 도피트를 메모리에서 1로 바꾼다. 그러면 어떻게? 전권한테마다 계속 들어올려야 됩니다.

00:21:38

접근할 때마다 필요로 하는 코드라든지 데이터라든지 석션을 메모리상으로 계속 들어오는다. 접근한다는 말은 뭐죠? 필요로 할 때, demand 할 때 메모리상으로 들어오는다. 만약에 지금 나는

00:22:02

페이지포트 핸들러에서 파일에 레터를 들어 올려서 이제 프로세스가 계속 진행되는 상황을 이해했는데 만약에 이제 uoct에 접근했어야죠. 여기 어세스 접근했는데

00:22:25

그런데 내가 만드니 지금 그러니까 인베드가 그렇지. 메모를 사는 게 그렇지. 메모를 사는 게 그렇지. 해당하는 이 페이지가 이제 메모를 사는 게 없다는 거지. 여기서 페이지가 페이지 100번이라고 합시다. 페이지 100번인데 예를 읽으려고 하는 접근했어요. 접근했는데 지금

00:22:49

지금 페이지 테이블을 살펴봤더니 invalid다 그렇지 디렘성이 올라가 있지 않다 그러면 페이지 포인트 육첩점 발사하겠지 페이지 포인트 육첩점 페이지 포인트 핸들러에서 얘가 페이지 포인트 일어난 원인에 분석하겠지 분석했는데

00:23:10

그런데 지금 보는 것처럼 페이지하고 파일, 포스트탑 파일하고 매팅된 것도 없고 어떻게 얘에 대한 페이지가 디스크린이 없다고 해야 되겠지 그 말은 뭐냐 하면, 그러니까 개발자가 엉뚱한 메모리 변지를 적혀있잖아요 그렇다면 페이지부터는 행동을 해달라는

00:23:32

다양한 원료들을 검사한 다음에 지금 이 부분은 실제 피식한 메모리에 맵핑 안 됐다. 맵핑 안 됐고 개발자 시세로 잘못 접근했다는 판단을 내리면 그러면 뭐가 발생하겠죠? 사용은 테지폴트가 발생해야겠지. 사용은 테지폴트. 맞죠? 그래야 되죠?

00:23:55

그래서 보면, 올라가면 페이지 포트라고 이야기했어요. 제가 다시 이야기하면, 프로세서가 메모리는 상에 흘러오지 않은 페이지 몇몇, 10쪽이죠. 페이지 10쪽 보면, 페이지 포트 연결하면,

00:24:18

글을 적힌 내용을 설명하면 메모리상에 올라와 있지 않는 페이지를 적극하게 됐때 페이지 포인트가 발생한다. 페이지 포인트 감사합니다. 페이지 포인트 exception 이란 것은 이때 MMO가 해당하는 페이지 테이블에 탑라왔더니 embedded가 표시됐다.

00:24:43

MNU가 확인하고 칸드라인에게 2차션을 보내드리는데 우리 7차는 트랙이라고 되어 있어요. 트랙이 아니고 페이지포트 2차가 되겠지 트랙 2차션은 우리 예전에 이야기했지? 학기촌에 트랙 2차션은 시스템컬으로 시스템컬으로 출할 때

00:25:05

유저보드에서 큰 앤모드로 명발된 발생하면 트램과 페지볼트 유저보드가 다르죠. 그런 다음에는 페지볼트 유저보드가 발생하게 되면 그 밑에 내용을 보면 유저보드가 발생하게 되면

00:25:27

커널은 실행하고 있는 프로젝트를 일시정지킨다. 일시정지켜야지만 cpu가 커널 코드를 수행할 수 있겠지. 그러니까 페이지포트의 셔츠 핸들러를 처리한다면 당연하게 cpu가 할 밖에 없으니까 수행하는 프로젝트를 일시정지하고 커널 코드를 실행할 수 밖에 없어.

00:25:47

그림을 보면, 12페이지 보면

00:26:10

그러면 우리 옛날에는 지금 여러분들은 부젝트였죠. 옛날에는 부젝트 없는 시절이었어요. 부젝트 없는 시절이었는데 일단은 이제 현판을 이렇게 얘기하겠죠. 교수님 수업을 고르시면 교수님 노트가 있어요. 노트를 쓰면

00:26:32

일단 여기에 막 피계를 해요. 그 다음 학생들이 열심히 피계를 하겠지. 그 선생님이 기다렸다가 이제 학생들이 피계를 다 사게 되면 이제 쭉 설명하세요. 설명하시는데 학생들이 되게 힘든 거라고 말하자면 피계를 없고 책으로 수업하는 모습이 있어요. 그 다음 황당할지 해서 다음 수록 가면 몇 페이지 열어주세요. 옆에 보면 그림 보이죠. 그러면서 그림 1번

00:27:01

1번 설명하시고 2번 설명하시고 하면 집중 못하라고요. 못하라는 거지. 중간에 잠 들었다. 아니면 갑자기 뭔가 하늘을 보면서 오늘 날씨 좋다고 하다 보면 번호조차 안 놓칠다. 그렇게 수업을 하시는 것도 그것이 되어있어요.

00:27:22

피기하는 게 힘들실 수 있을지 모르겠지만 그러니까 지금 딱 그 부분이잖아요. 집중이 잘 안되지만 우리 때는 있었어요. 그러니까 조금만 차이가 볼게요. 자 1번. 자, 딱히 했죠?

00:27:43

그래서 이제 이 번 보면 이겁니다. 이 번 그림을 보면 이미 버추얼 메모리하고 파일하고 맵핑이 이루어졌는데 디렘상에 테스트라는 페이지가 올라오지 않는 상황이다. 그래서 1번을 딱 체크를 했어요. 체크를 했더니 이제 페이지 포트가 2번

00:28:05

2번, 1번 봤더니 페이지포트에 인베리드다. 인베리드, 인베리드니까 CPU는 페이지포트 접천을 받았으키다. 2번입니다. 트램이 아니고 페이지포트 접천이예요. 그리고 3번, 3번 과정에서 보면

00:28:26

3번과 2번 사이에 보면 OS가 있죠. 4번은 OS에서는 페이지포트 2셉션 핸들러가 체리인다고 체리하는 부분이라든지 페이지포트 2셉션 핸들러가 체리되는 부분이고 그리고 3번은 뭐냐면 3번은 페이지포트 2셉션 핸들러에서 지금 접근한 택트라는 페이지가 이제 빨리, 그러니까 N자 마우스에 0에서 4K 영역에 있는 거란 것을

00:28:54

확인해서 이제 파일 스템한테로 지금 HMAUSE에 첫번째 블록을 읽어달라는 걸 요청을 할 겁니다. 그런 다음에 디스크에서 4번은 TACT라는 코드를 메모를 상으로 올린다.

00:29:18

올린다. 내물선 올리면 프레임 원인 시에 올라가겠죠. 그러면 올라간 다음에 페이지 태브를 업데이트 한다. 그래서 페이지 태브를 업데이트 한다. 그러니까 프레임 100% 올라서는 100 그리고 배드리드를 1로. 자 그런 다음에 이제 모든 동작이 완료되었으면 다시 시작해야 되겠죠.

00:29:41

페이지포트 적용이 발생한 명령부터 다시 시작합니다. 페이지포트 적용이 발생한 위시부터 다시 시작합니다. 시작하면 페이지포트가 발생한 그 부분을 보면 페이지가 명령이 올라와 있네 하면 접근이 되겠죠.

00:30:02

그것도 있는 것입니다. 그림은 어떻게든 일본이 공사선생활이 되는데 그다음 PPD는 뭐냐면 Dementer Paging이 통통을 쓴다. 그 자밖에 없죠. 가면 보면 Dementer Paging이 실제로 컴퓨터의 성능에 어떤 영향을 미치냐.

00:30:29

어떠했냐 성능이 감시냐. 그 다음 파란색, 큰 단추를 보면 페이지 포트를 고려한 이펙티브 메모리 어세스 실질적인 메모리 어세스 타임이 어떻게 됐냐.

00:30:51

그래서, 또는 Prevent Paging이 실제 프로세스의 실행속도의 어떤 영향을 미치냐, 그거를 탈퇴하지 않는다. 그래서 보면 메모리 일반적으로 메모리어셋은 옛날 책에서 메모리어셋 타임은 시리즈 2등 나노 세크다. 이야기하는데 요즘은 더 빨라졌겠죠. 아주 빨라졌겠죠.

00:31:13

그리고 effective memory set time은 이런 수식이 된다. P는 뭐냐면 page font relation. 100번 가상 메모를 접근하는데

00:31:35

그런데 몇 번의 페이지 포트도 가상하냐. 몇 번의 페이지 포트도 가상하냐. 100번 메모로 적어놨는데 몇 번 가상하냐. 그니까 비유를 나타내고 있어요. 그래서 제가 뒤쪽 보면

00:31:56

그러면 P 곱하기 페이지포트 타임은 페이지포트 타임은 페이지포트가 발생했을 때 처리돼서 완료될 때까지 걸리는 시간 걸리는 시간이 페이지포트 타임이다. 이 과정 있죠. 이렇게 앞쪽 그림에서 보면 앞쪽 그림에서 보면

00:32:22

앞쪽까지는 1번부터 6번까지 처리되는 시간은 페이지포트 탈입니다. 1번부터 6번까지 처리되는 정가적인 시간은 페이지포트 탈입니다.

00:32:44

이 시간에 페이지 포즈 타임

00:32:45

그래서 p 곱하기 페이지포트 타임에 플러스에 p-1. p-1이란 것은 뭐냐 페이지포트 발생하지 않고 바로 메모리에 있는 데이터를 바로 접근하는데 성공한 비율입니다. 곱하기에 메모리 버셋 타임이 되는 거예요.

00:33:07

p가 0이면 페이지 폰트가 한 번도 발생하지 않았다. p가 1이면 가상 메모리에 접근할 때마다 매번 페이지 폰트가 발생했다는 겁니다. 그래서 보면 그 밑에 보면 페이지 폰트를 서비스할 때

00:33:30

삽때 이제 어 요구되는 시각 그리는 시간은 얼마나 될까 나 없어요 나는데 크게 3 3 부분으로 이제 나눠집니다 세번째는 첫번째는 자 페이지 포트 인테리어 서비스 이 셔츠는 서비스 하는 시간 두번째는 페이지

00:33:51

페이지 포트를 디스크에서 읽는 시간. 세 번째는 정지된 프로세스를 재시작하는 시간. 이렇게 되어 있어요. 그 다음 장에 보면 페이지 포트를 처리하는 시간이 이제 앞쪽 그림에서 어느 부분에 해당하냐면

00:34:15

페이지 폰트를 치열하는 시간 1번 1번은 뭐냐 하면 있죠? 페이지 폰트를 세트 하는 시간 1ms보다 작다고 나오지 맞죠? 페이지 시간부터

00:34:37

15페이지에 이제 갈로 1번 있죠. 갈로 1번인데 페이지 포인트 입력 전에 채우는 시간은 1mm보다 작대인데 이게 뭐냐면 그림 12페이지 보면 1번 그림 1번부터

00:35:01

이 최대한 납니다. 해당하는 테스트라는 코드가 페이지가 디스크에 어디 있는지까지 발견하는

00:35:24

확인하면 걸리는 시간이 없지. 이 동작 모두 다 cpu와 처럼 하겠지. cpu와 처럼 하겠지. cpu와 처럼 하니까 굳이 시간이 많이 안 있겠지. 페이지 포트가 발생했고 그러니까 해당하는 텍트가 디스크에 어느 것이 있는지 아니면 확인하면

00:35:48

각이냐 하면 가정이 갈로 입어야겠지. 이번은 갈로 입어야겠지. 갈로 입어야겠지. 갈로 입어야겠지. 갈로 입어야겠지. 이제 페이지를 메모로 상으로 올라올 때 그리는 디스크메이터지. 디스크메이터지. 이거 크겠지.

00:36:09

이제 디스크레이더시가 제일 크겠죠. 맞죠? 그러니까 우리 시작에서는 8mm 정도 된다는데 요즘은 진짜 줄어들었지만 그 미리 세컨이라고 볼 수 있어요. 그리고 세 번째, 갈로 3은 갈로 3은 뭐냐면 앞쪽 그림에서

00:36:30

5, 6에 대결이 되거든요. 페이지 탭을 업데이트하고 그리고 정지된 프로젝트를 재시작. 이것부터 10기가 차가워요. 10기가 차가기 때문에 시간이 가득 잘해요. 무시한 정도. 그래서 이 3을 모두 대보면

00:36:51

1,2,3 모드 대보면 Average 페이지포트 서비스 타임은 1,2,3 모드에 담당하면 8,2,3 크다. 디스크 아이로 하는게 Dominator라고 되겠지. Dominator 때문에 이번 시간은 무시해변하다.

00:37:14

타임을 하다. 그래서 이펙티브 어셋스 타임을 다시 계산합니다. 메모 어셋스 타임이 200nm다. 그리고 페이지 포트 레이트가 1,000분이다. 1,000분이다. 1,000분. 가사만 1,000분 할 때마다 한 번씩 페이지 포트 발생한다. 이펙티브 메모 어셋스는 이러이러하다.

00:37:37

이렇게 계산하고 나오겠지? 여러분들 보면 이제 소형을 재시행 시작할 때 조금은 로딩 시간을 늘릴 수밖에 없겠지? 그러니까 디벤드 페이징으로 수출을 하는데 여러분들 화면 상에 보여주는 코드 부분이 화면 상에 보여주는 내용이 복잡하면 명확한 거야? 오르기 수 있을 거겠지?

00:38:02

그러니까 노트패드처럼 간단하면 빠르게 로드할 수 있지. 그래서 실심에 로딩할 때 어쩔 수 없이 견딜 수밖에 없어야지.

00:38:15

그러니까 이제 여러분들은 페이지 로딩할 때 하단하는 프로그램이 로딩할 때 첫 화면에 보여주는 코드들이 아주 작은 영역에 존재하게 되면

00:38:36

하면 금방 로딩이 되겠죠. 그런데 한문상 모여주는 폰들이 많은 페이지를 사용합니다. 금방 시간이 오래 걸릴 수도 있지. 그러면 페이지 포트 타임을 시간을 줄일 수 있는 방법은 어떻게 돼요? 올수를 재석하는 게 아니고 일반 상대입니다.

00:38:58

그러니까 아버지 어머니가 사용할 때 페이지포트 시간을 줄일 수 있는 가장 좋은 방법은 뭐죠? 디스크를 좋은 거 사면 되겠지? 디스크를 좋은 거 사면 되겠지? 디스크를 좋은 거. 그러니까 SSG를 사든지 빠른 하드 디스크를 사면 그만큼 페이지포트 타임이

00:39:19

페이지포트 타임을 주로 쓰겠죠. 이제 페이지 리프레스 몬트인데 이제 16페이지 요거 그림이 복잡하겠다.

00:39:34

페이지 18쪽까지만 하고 다음 시간에 그림 다시 이용하면서 다시 설명할게요. 자 페이지 16쪽. 모티베이션 나오는데

00:39:56

모티베이션 넣는데요. 아까 이 걸음대로 보는 것처럼 페이지를, demand 페이지를 해서 디스크에 있는 페이지를 메몬상에 올랐어요. 올렸는데, 지금 메모리, 그러니까 디렘상에

00:40:18

빔 프레임이 없다고 했다. 빔 프레임. 사용할 수 있는, 가용할 수 있는 빔 프레임이 없다고 했다. 그럼 어떻게 할까? 그러니까 디렘 공간이 부족하다는 거였지. 꽉 차서. 그러니까 베기드람 프레임으로 꽉 차 있어서 부족하다. 그런 상황에서 이제 새로운

00:40:39

새로운 페이지를 디스크에서 읽어드립니다. 방법은 어떻게 할까요? 그 방법이 그에 대한 대책으로 17페이지

00:41:01

1번은 뭐냐면 1번. 그러니까 디멘트 페이지만 요청한 현재 프로세스를 강제 증명시킨다. 증명시킨다. 이렇게 하면 그렇지.

00:41:22

그렇지? 맞지? 이 시간 동안 열심히 돌렸는데 돌리면 안다 돌리고 있는데 약간의 좁아버리다. 맞지? 오류가 그러니까 구내보관을 이렇게 하면 하나였지 그렇지? 옛날에 여러분들 가상단문가 있었지? 옛날에 우리 페이집파우 사회가 되면

00:41:44

가상맥을 넘는 상황에서는 이제 어떻게 이제 지금부터 디멘트 페이지 같은 거 못해요. 못하고 나서 못하게 되면 뭐 가상맥을 없으면 디멘트 페이지부터 붙어서 뭐 포텍션까지 이런 것도 잘 안돼요. 그러면 뭐 앱을 실행하다가 각 앱들로 자기가 사용할 수 있는 공간을 미리 다 한 번 해요.

00:42:06

DL무반에 17만원의 제침이니까 계산해서 앱 크기는 다 정해놓고 코팅을 하지 그 영역이 넘어가라고 하면 혼나요? 그 가리자면 그 이상 넘어가지라면 혼나에봇지 왜 메모리 많이 사용하냐고 하면서 그러다가 혹시나 똥뚜아들 새로운 앱을 실행했다

00:42:34

그러면 최종 앱 자체가 실행한다. 왜냐하면 무너지 꽉 차있는데, 처음 처음 쌓여있는데 빈 모임이 거의 없다는 거예요. 그 상황에서 하려고 하면 무뎌이 되는 거지. 그러니까 되게 불편하겠죠. 메모리가 부족하면 아예 앱 자체를 실행 못하게 되거든요. 그래서 포센트를 격려시키는 거지.

00:42:56

프로세스를 쉽게 못하게 한다는 것은 말도 안 됩니다. 두 번째는 프로세스 스와핑 지금 프로세스가 돌아가고 있다. 내가 지금 나의 앱이 돌아가고 있는데

00:43:21

디멘드 페이징을 하려는데 메모니가 부족하다 하면 레이딩큐나 레이딩큐나 레이딩큐리어 자막이 일시정지되어 있는 프로세스를 하나 선택해서 어디로? 디스크로 그대로 백업시켜버린다. 백업

00:43:44

백업을 시키는 동작의 방법은 'swap out'이라고 해요. 프로세스 단위로 백업하고 나중에 다시 그 포세스에 진행할 때는 프로세스 단위 전체를 다시 메모사에 올리는 거죠. 메모사에다가 백업된 프로세스에 대한 전체 데이터를

00:44:06

데이터를 올리는 그 과정도 우리가 stop in 해봐야지. stop in. 프로세스 단계로 일어날 때요. 백업하고 그리고 나중에 재생할 때 로드할 때 프로세스 단계로 일어난다. 프로세스에 사용하는 코드 데이터를 모두 백업했다가 다시 나중에 로드할 수 있다. 그러면 백업하고 stop 하고 할 때 아고를 하면

00:44:28

메모리에 있는 그 원권하고 디스크에 있는 베타가 지금 똑같은 복사권이 있어있으니까 메모리에 있는 내용을 그냥 깨끗하게 비어버린다. swap out한 process에 사용하는 메모리 원이 모두 되어버린다. 자 이렇게 하면 어떻게 되죠?

00:44:50

이렇게 되죠. 빈곤하고 가능할 때 그런데 문제는 지금 프로세스 사용하는 공간이 500m이다. 이거 싹 아우시키면 어떻게 해요? 디스크로 갈 때 엄청나게 시행을 올려볼 겁니다. 나중에 이 프로세스가 다시 재시행된다는 과정이에요.

00:45:17

이 500m에 관한 데이터는 모두 명을 세 버린다. 수확 인한다. 이거 감당해야 되겠지. 이 시간에 아주 오래 걸린다는 거다. 그래서 세 번째는 뭐냐면 세 번째는 페이지 단위로 우리가 백업하고 다시 요다하자. 필요할 때마다.

00:45:40

빈곤이 필요할 때는 페이지를 선택해서 그 해당 페이지를 디스크로 백업하고 나중에 필요할 때 그 페이지를 다시 로드한다. 페이지 단위로 하기 때문에 아무래도 한 번에 일어나는 IO 횟수가 많지 않겠죠.

00:46:02

그렇지. 안 차려야 할 겁니다. 그렇지. 됐지? 그래서 페이지의 이플레스먼트는 우리가 실제 OSN에 구현되어 있고 이제 중요해서도 우리가 다음 시간에 이 부분을 다시 설명할게요. 그래서 수업 연기를 하고 취소 보러 갑시다.

00:46:23

- 감사합니다.

운영체제 5-13 Virtual memory management.m4a | Alt