정글
정글 [week11] Pintos-KAIST Project 3 :: VIRTUAL MEMORY - 2
mmap과 munmap구현이 끝나고 해야될 건 swap in/out 구현과 copy-on-write 구현이었다. swap in/out 은 file_backed_page 일 때와 anonymous_page 일 때로 나뉘어 지는데, 각 page마다 구현방법이 다르다.file_backed_page는 disk에 실제 파일이 있기 때문에, swap_out 할 때 page의 내용이 변경되었으면(dirty bit로 판별가능) disk의 파일에 내용을 덮어씌우고 frame을 비워주면 된다. swap_in 할 때는 그냥 disk의 file을 가지고 오면 된다. anonymous_page는 disk에 파일이 없기 때문에 disk의 swap영역에 따로 저장해두고 꺼낼 때도 그곳에서 꺼내야 한다. swap_out 할 때 sw..
정글 [week10] Pintos-KAIST Project 3 :: VIRTUAL MEMORY
pintos project3를 진행하며 알게된 정보들을 정리하는 글이다. pintos에서는 page_fault가 발생하는 경우를 세가지로 정리할 수 있다.page에 매핑되는 frame을 찾을 수 없어서, read-only 파일에 writing을 하고자 할 때, 잘못된 주소를 참조했을 때 page에 매핑되는 frame을 찾을 수 없는 경우는 또 다시 세가지로 나뉘는데,lazy_loading으로 인해 page는 할당되었는데 아직 frame을 할당받지 않았을 때, swap out이 되어 swap 영역에 있을 때, 처음 할당받은 stack 크기보다 더 사용해서 동적으로 stack을 더 할당받고자 할 때이럴 때 page_fault가 발생하게 되고, frame을 할당해줘야 하는 위의 세가지 경우에는 frame을 할..
정글 [week08] Pintos-KAIST Project 2 :: USER PROGRAMS
Project 2 USER PROGRAMS 프로젝트를 진행하며 알게된 pintos의 동작방식을 적어두는 글이다. process_exec(void *f_name) 가 실행되면 f_name을 이름으로 가진 유저프로그램을 실행한다.이 함수 내부에는 load() 함수가 있고 이 load() 함수가 하는 일은- memory에 page table을 만든다.- disk에서 file을 열고, ELF(실행파일의 포맷) header 을 읽어서 memory에 올린다.- disk에서 file을 열고, data를 읽어서 memory data_segment에 올린다. text를 읽어서 memory text_segment에 올린다.- user stack을 만들고 주어진 argument들을 stack에 넣는다.그리고 설정한 intr..
정글 [week07] Pintos-KAIST Project 1 :: Alarm Clock
운영체제에는 일정 시간에 프로세스를 깨우는 타이머 알람 기능 시스템 콜인 alarm clock 기능이 있다. 현재 pintos에 구현되어 있는 alarm clock은 busy waiting 방식으로 구현되어 있다.프로세스의 상태가 running과 ready 사이에서 계속 왔다갔다 하면서 일어나야되는 시간인지를 확인하는 방식으로 wait하는데 바빠서 busy waiting 방식! running이라는건 cpu가 실행하고 있다는 상태이고 ready는 cpu가 실행하고 있지 않은 상태인데 이 상태들을 반복해서 왔다갔다 한다는건 context switching을 계속 한다는 것이기 때문에 매우 비효율적이다.이 방식을 sleep/awake 방식으로 바꿔주기에 앞서 기존 코드를 분석했다. 전체적인 흐름은 main t..
[정글 WEEK00] 개발일지 - 정글러 동선
cookie, session, jwt 로그인 자체 기능도 어렵지만 로그인 상태가 유지되도록 하는 것도 중요하다. 메일을 쓸 때마다, 메일을 삭제할 때마다, 기능을 쓸 때마다 다시 로그인 해야하면 안되기 때문이다. Authentication : 인증, 쉽게 말해서 로그인. 가입된 회원임을, 일정 권한이 주어진 회원임을 아이디와 패스워드를 통해서 말 그대로 인증을 받는 것 Authorization : 인가, 한번 인증을 받은 회원이 이 후 서비스의 여러 기능을 사용할 때 내가 로그인 되어 있음을 알아보고 허가를 해주는 것. 로그인이 유지되는 상태에서 일어나는 일. (어서(와~)이제이션) 사이트나 서비스에 인증하고 인가하는 방법에는 cookie, session 과 jwt 가 있다. 관련 내용은 아래 링크들에 ..