크래프톤정글
-
[KFT_JNG_4] 4주차까지의 회고Life/Retrospect 2024. 3. 23. 20:56
개발 공부와 관련된 많은 것들은 개인 노션의 WIL에 다 적어 놓았으나, 긴 연휴를 앞두니 사람이 막 지금까지 내가 어떻게 지내왔는지 되돌아보고 싶고 한가 보다. 이에 지금까지의 나는 어찌 살았나, 정글을 잘 헤쳐 나가고 있나에 대한 회고록을 적어보고자 한다. 0주차 생활 0주차 즉, 입소를 하고 난 후 미니프로젝트를 진행하는 주차에는 사람들과도 어색했고 룸메와도 어색했었다. 기숙사 생활을 해본 적 있지만 없다고도 할 수 있는 나는, 처음 기숙사 생활에 적응하느라 고생을 좀 한 것 같다. 새 것으로 교체한 것인지, 그냥 빤건지는 모르겠지만 어쩄든 새로 쓰는 침구류와 언제 청소했는지 알 수 없는 기숙사 방과 친해지는 과정도 필요했다. 다른 사람과 한 공간에서 매일 자는 것도 군대 이후 처음인 것 같다. '..
-
[KFT_JNG_4] 찬찬히 나를 돌아보는 시간Life/Retrospect 2024. 3. 23. 20:49
회고록을 시작하며 오래 전, 정치외교학과에서 SW관련 학과로 이중전공을 변경하면서, '스파르타코딩클럽'이라는 곳에서 처음 코딩 교육을 들으며 회고록을 적었던 적이 있다. 스스로에게 솔직해지자면 좀 억지로(?) 적었던 것 같다. 하지만 이제는 큰 부담 없이, 울림을 주는 날이 있을 때마다 부담없이 적어보려고 한다. 그래야 좀 주기적으로 적을 것 같다. 이 글을 쓰는 현재는, 3일간 크런치 모드로 프로젝트를 진행하고 난 뒤 뒷풀이 회식이 끝난 후이다. 그리고 이 글은 과거, 현재, 미래에 대한 나의 에세이이다. 지나온 과거에 대한 성찰 나에게 '배움'이란 매우 어려운 것이었다. 암기빵이 있으면 정말 좋겠다는 마음으로, 암기해야 할 것들에 대해 '굳이 왜 외워야하지'라는 생각으로만 학습 태도를 가졌다. 결국 ..
-
[PintOS] Project 2 - System Call (3)Projects/Krafton_Jungle_4 2024. 3. 20. 10:18
(2)에 이어서 구현중이다 close 파일디스크립터를 닫는다. 프로세스가 종료되거나 중단될 때, 해당 프로세스의 모든 열린 파일 디스크립터가 암묵적으로 닫힌다. 마치 이 함수를 각각의 파일 디스크립터에 대해 호출한 것과 같은 효과가 있다. 구현을 위해서는 file_close를 사용해야하고, 파일 디스크립터 테이블에서 fd에 해당하는 파일을 제거하는 함수를 새로 만들어 주어야 한다. // userprog/process.c void process_close_flie(int fd) { struct thread *curr = thread_current(); curr->fdt[fd] = NULL; } // userprog/syscall.c void close(int fd) { file_close(process_g..
-
[OS] File DescriptorComputerScience/OS 2024. 3. 18. 20:30
pintOS 시스템 콜을 구현하던 와중 파일, 파일 디스크립터, 파일 디스크립터 테이블 등과 같은 피상적으로만 알고 있던 개념이 나왔다. 이에 대해 이들이 무엇이고 왜 사용되며, 어떻게 사용되는지 알아보아야 구현이 가능하다 생각해 정리를 한 번 하고 넘어가고자 한다. 파일 디스크립터(File Descriptor) 파일 디스크립터는 운영체제가 파일을 다루기 위해 사용하는 추상화된 핸들이다. 즉, 파일이나 입출력 같은 복잡한 객체를 다룰 때 직접적인 세부 정보나 구현 방식 대신 간단한 식별자를 사용하는 것이다. 정수로 표현되며, 운영체제의 파일 시스템 테이블에 있는 파일이나 입출력 리소스를 가리킨다. 각 프로세스는 자신만의 파일 디스크립터 테이블을 가지고 있으며, 이 테이블을 통해 파일이나 기타 입출력 리소..
-
[PintOS] Project 2 - Argument Passing (2)Projects/Krafton_Jungle_4 2024. 3. 16. 14:24
이제 user_stack에 문자 배열과 문자열 개수를 전달하는 작업을 수행해야 한다. load()에서 setup_stack() 을 통해 인터럽트 프레임의 rsp의 위치를 USER_STACK으로 설정해 두었다. 주소는 0x47480000 이다. 그전에 각각의 레지스터들이 어떤 역할을 하는지 정리를 해 보자 범용 레지스터 작은 데이터 저장 공간으로 연산처리, 연산 결과, 복귀 주소 등 작은 데이터를 기억하는 레지스터이다. RAX - Accumulator 주로 산술 연산에 사용되고, 함수의 반환 값도 이 레지스터를 통해 전달된다. RBX - Base 메모리 주소를 저장하기 위한 용도로 사용된다. RCX - Counter 반복문에서 카운터로 사용되는 역할이다. RDX - Data 다른 레지스터를 서포트하는 레지..
-
[OS] User mode & Kernel modeComputerScience/OS 2024. 3. 12. 12:47
이 글은 'OSTEP: Operating Systems Three Easy Pieces'를 참고하여 쓴 글로, 학습 기록용으로 작성된 글입니다. 따라서, 정확하지 않은 내용이 있을 수 있습니다. 옳지 않은 정보가 있다면 지나치지 마시고 수정 요청 댓글 달아주시면 감사하겠습니다. 🙂 OS 과정을 진행해 오면서, 이해가 되지 않지만 그냥 슥~ 하고 지나간 부분이 여러 개 있었다. 그 중 하나가 바로 이 User mode와 Kernel mode이다. 이제는 키워드로도 등장해서, 더 이상 피할 수 없다! 바로 살펴보자. 6. Mechanism: Limited Direct Execution 우리가 가상화를 하는 이유는 무엇인가? 바로 하드웨어와 소프트웨어 기술이 발달하면서, 컴퓨터가 처리해야 할 일이 많아졌기 때..
-
[OS] 32 bit OS vs 64 bit OSComputerScience/OS 2024. 3. 12. 00:06
컴퓨터 시스템? CPU, OS? 컴퓨터 시스템은 하드웨어와 소프트웨어로 나눌 수 있는데, CPU는 하드웨어가 되고 OS는 소프트웨어가 될 수 있다. 우리가 흔히 컴퓨터 시스템을 논할때 컴퓨터 시스템이 32비트다 혹은 64비트다 라고 하는 것은 하드웨어와 소프트웨어 즉, CPU와 OS 모두를 포함하여 이야기 하는 것이라고 하는데.. 32비트? 64비트? OS관점에서 32/64비트와 CPU관점에서의 32/64비트, 또 시스템 관점에서의 32/64 비트는 비슷하면서도 조금씩 다른 의미를 갖고 있다. OS를 이야기 할때, 32/64 비트는 CPU가 단일 연산에 수행할 수 있는 데이터의 최대 크기를 뜻한다. 또한 CPU 관점에서는 이 비트가 레지스터 크기를 말할수도 있다는데.. 많이 헷갈린다. 이에 대해 좀 더 ..