본문 바로가기

분류 전체보기91

[OS] pintos의 interrupt frame 이란 + do_iret 함수가 하는 일 인터럽트 프레임 및 do_iret 함수 인터럽트 프레임이란 무엇인지, 그리고 do_iret 에서는 어떤 일을 하는 건지 이제서야 조금 알 것 같아 별도로 글을 작성한다. struct intr_frame do_iret을 이해하려면 인터럽트 프레임 구조체의 크기와, 인터럽트 프레임 구조체 내의 gp_registers 구조체, 그리고 나머지 멤버변수들의 크기를 알고있어야 한다. 데이터 크기 각각의 사이즈를 모두 출력해보았다. (뭘 굳이 찍어봐야 아나 싶은 것들도 있지만 난 아직도 데이터 크기가 어렵다 😭 ) printf( "인터럽트 프레임 사이즈: %d \\n", sizeof(struct intr_frame)); printf( "gp_registers 사이즈: %d \\n", sizeof(struct gp_r.. 2022. 11. 29.
[OS] Pintos - system call 호출 및 흐름 유저모드에서 유저 프로세스가 호출한 시스템 콜이 어떻게 커널모드로 바뀌고, 어떻게 해당 시스템 콜에 해당하는 함수가 호출되는지에 대한 과정이 헷갈려서 며칠동안 찾아해멨다. 반에 똑똑한 친구들이 많아서 드디어 흐름을 이해할 수 있어서 짧게 정리해보려고 한다. 우선 유저프로그램에서 fork() 시스템콜을 호출하는 상황을 예로 들어 흐름을 설명해보려고 한다. 1. 유저프로그램에서 fork(스레드이름); 으로 fork 호출 2. fork() : syscall1(fork의 시스템콜 번호, 스레드이름); 호출 /* lib/user/syscall.c 파일 */ pid_t fork (const char *thread_name){ return (pid_t) syscall1 (SYS_FORK, thread_name); }.. 2022. 11. 25.
Week08 | 눈물과 함께 끝난 핀토스 1주차 너무 바빠서 회고를 안 쓰고 넘어가려다가, 그래도 이번 주가 어땠는지는 짧게 기록하고 넘어가 보고자 글쓰기를 시작 .. 간략한 글쓰기를 위해 list 형식으로 핵심만 적어보겠다. 1. 자세히 보아야 예쁘다. 오래 보아야 사랑스럽다. 너도 그렇다.. 핀토스.. - 사람도 지식도 더 잘 알아갈수록 사랑스러운(?) 것 같다. 핀토스를 시작한 첫 날은 아주 지옥같았다. 2만 줄이 넘는 이 코드들을 도데체 어디서 부터 시작해서 이해해야 하는지, 도저히 알 수 없었고 앞으로 6주동안 핀토스 과제를 끝낼 수가 있을까 암담했다. 그렇지만, 이곳에서는 언제나 그랫듯 하루하루 지날 수록 조금씩 핀토스를 알게 되더라. 그리고 알게 되는 만큼 핀토스가 좀더 사랑스럽게(?) 조금은 더 재밌게 느껴졌다. 6주 후에는 핀토스를 정.. 2022. 11. 17.
Week06-07 | 옴짝달싹 못하고 있는 느낌 지난 주인 6주차 회고는 안 썼다. 이번엔 못 쓴게 아니라 안 쓴 건데 나의 한 주를 돌아보기가 창피해서 안 썼다. 이상하게 6 주차는 공부가 손에 안 잡혔다. malloc와 같은 동적 메모리 할당기를 직접 만들어보는 주차였는데, 가상메모리라는게 제대로 와닿지도 않고 디버깅도 어렵다 보니까 코드를 쓸때도 뭔가 손에 잡히는 것을 만들어 내는 느낌이 아니라 뇌피셜로 코드를 쓰는 느낌이라 계속 공부가 재미 없었다. 6주차 과제는 '최소한만' 구현했고 정글에 온 이후로 가장 몰입하지 않았던 한 주였다. 그렇게 한 주를 보내고나니깐 회고를 쓰기가 창피했다. 그래서 7주차를 두 배로 열심히 해서 회고를 같이 쓸 요량으로 6주차 회고를 스킵해버렸다. 그리고 7주차. 7주차는 6주차보다는 공부를 훨씬 열심히 한 것 같.. 2022. 11. 10.
[CS] 네트워크 프로그래밍 - 연결형 통신과 비연결형 통신 / TCP /UDP 네트워크의 전송 계층에서는 신뢰할 수 있는 데이터를 순차적으로 전달하는 역할을 한다. 전송 계층이 존재함으로서 상위 계층들은 데이터 전달의 유효성이나 효율성을 신경쓰지 않게 된다. 물리 계층, 데이터링크 계층, 네트워크 계층의 세 개 계층만 있어도 목적지에 데이터를 보낼 수 있지만, 데이터가 손상되거나 유실됐는지 알 수는 없다. 전송 계층은 데이터가 중복되거나 누락되지 않고 오류 없이 순서에 맞게 전송되도록 관리함으로써 목적지에 신뢰할 수 있는 데이터를 전달한다. 전송 계층은 신뢰할 수 있는 데이터를 전달하기 위해 아래 두 가지 작업을 한다. 오류를 점검하여 오류가 발생하면 데이터를 재전송하도록 요청 전송된 데이터의 목적지가 어떤 어플리케이션인지 식별하여 어떤 어플리케이션으로 전송해야 하는지 알려줌 연결.. 2022. 11. 5.
[CS] 네트워크 프로그래밍 - WAN, 라우터(Router), 인터넷프로토콜(IP), 인터넷(Global IP Internet) , IP주소, 도메인 네임, DNS, 인터넷 연결(Internet Connections) 네트워크는 서로 다른 기술을 가진 임의의 LAN과 WAN들로 구성되는데, 어떻게 이 기술 차를 극복하고 통신을 할 수 있는 지 물음을 던지며 이전 포스팅을 마쳤다. 이제 이 문제에 대한 답으로 포스팅을 시작하려 한다. 정답부터 얘기하자면, 이 문제는 각 호스트와 라우터에서 실행되는 프로토콜 소프트웨어 (protocol software) 단계(계층)가 서로 다른 네트워크의 차이를 완화해주는 역할을 함으로써 해결된다. 이 소프트웨어는 호스트와 라우터가 서로 데이터를 전송할 수 있게 해주는 규칙(IP 프로토콜)을 실행하고, 이 IP 프로토콜은 아래의 두 가지 역할을 (반드시) 수행한다. Naming Schema : 각각의 호스트가 동일한 형식의 고유한 주소( =IP주소)를 가질 수 있도록 한다. Deliver.. 2022. 11. 5.
반응형