전체 글 3

HTTP란

HTTP (Hyper Text Transfer Protocol) 인터넷에서 데이터를 어떻게 주고받을지 정해놓은 프로토콜 클라이언트의 요청(request)와 응답(response)로 구성됨 80 포트 사용 HTTPS TLS(Transport Layer Security) 기존 HTTP 프로토콜은 메시지가 암호화 되어있지 않음 메시지를 암호화해서 데이터를 주고받는 프로토콜 TLS 연결과정 - 클라이언트가 서버에게 메시지 전송 - 서버는 자신이 가진 TLS 제3자 인증서를(공개키) 클라이언트에게 전송 - 클라이언트는 CA(Certified Authority)를 통해 인증서 유효성을 검증 - 클라이언트는 자신의 대칭키를 서버의 공개키로 암호화하여 서버에 전송 - 서버와 클라이언트는 대칭키를 공유하게 됨 - 통신 ..

카테고리 없음 2023.01.30

PintOS - Project3 - Virtual Memory

가상 메모리에 대한 이해 가상 메모리 영역은 실제 물리메모리 크기에 비해 매우 크다. 실제로 핀토스는 x86-64기반이라 64비트 체계를 사용하는데, 주소표현에는 총 48bit를 사용한다. 즉 가상메모리의 최대 크기는 2^48 = 256TB에 달한다는 것을 알 수 있다. 그런데 놀랍게도 현재 핀토스에게 단 20MB만의 물리메모리를 할당했는데도 불구하고 프로그램이 잘 돌아간다. 아래의 그림은 핀토스에서 가상 메모리(왼쪽)와 실제 물리 메모리(오른쪽)를 나타낸 모식도이다. 가상메모리 덕분에 유저(프로그램)는 마치 자신이 대용량의 사적인 메모리를 가지고 있다고 착각하고 있다. 그러나 실제로는 유저들마다 유저영역이 존재하고, 혼자서 메모리를 무한정 사용하지도 않는다. CPU는 MMU에게 가상주소를 전달하고 물리..

PintOS - Project2 - UserProgram

열흘동안 PintOS project2를 구현었다. 이 과정에서 특별히 어려웠거나 중요하다고 생각하는 부분을 간단히 소개하겠다. 1. System Call이 호출되는 과정 우리는 userprog/syscall.c에서 system call handler와 여러 system call함수들을 구현하여 시스템콜이 돌아가도록 만들었다. 처음에는 system call 함수가 호출되면 곧바로 내가 만든 함수가 호출된다고 생각했지만 그게 아니었다. 가장 처음은 lib/user/syscall.c에 있는 함수가 호출된다. 예를들어 fork()를 호출하면 우리가 만든 userprog/syscall.c에 있는 fork()함수가 곧바로 호출되는 것이 아니라 lib/user/syscall에 있는 fork()함수가 호출된다. 이 함..