전체 글
-
[PintOS] Project 2 - User Memory Access (1)Projects/Krafton_Jungle_4 2024. 3. 18. 20:02
User Memory Access arguement passing이 끝난 후, 이제 user memory access 부분을 하고 있다. 깃북을 보자 system call을 사용하기 위해서는 유저 가상 주소 공간에 있는 데이터들을 읽고 쓸 수 있는 방법을 제시해야 한다. 인자들을 얻을 때는 문제가 되지 않지만 만약 시스템 콜로 얻게 된 인자 즉, 유저가 넘겨준 포인터들이 올바르지 못한 곳을 가리키고 있다면? 이것이 User Memory Access의 주요 문제이고 해결해야만 한다. 문제 케이스는 세 가지 정도로 나뉜다. 포인터가 null을 가리킬 경우 포인터가 매핑되지 않은 가상 메모리를 가리킬 경우 포인터가 커널 메모리를 가리킬 경우 깃북을 좀 더 읽어보면, 이를 어떻게 해결할 지 좀 더 자세히 나온다..
-
[OS] Virtual Address, Page Table, PML4ComputerScience/OS 2024. 3. 16. 20:34
pintOS 과제를 하던 중 Page Table 말고도 여러 가지 개념들이 나와서 정리를 한번 하고 가야 할 것 같아서 글을 쓴다. Virtual Address 프로세스가 메모리에 접근할 때 사용하는 주소이다. OS는 가상 주소를 사용해서 프로세스가 서로의 메모리 공간을 침범하지 않도록 격리한다. OS는 프로세스로 하여금 전체 메모리 공간을 사용할 수 있다고 '속인다' 또는 '환상'을 제공한다. x86-64 아키텍처에서의 가상 주소 구성 x86-64 아키텍처에서 가상 주소는 64비트로 구성되어 있고, 여러 단계의 페이지 테이블을 통해 물리 메모리 주소로 변환된다. 대부분의 x86-64 시스템은 실제로 48비트 혹은 57비트 가상 주소를 사용하고, 이는 CPU나 OS별로 다르다. 최상위 비트(47번째 비트..
-
[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 다른 레지스터를 서포트하는 레지..
-
[PintOS] Project 2 - Argument Passing (1)Projects/Krafton_Jungle_4 2024. 3. 15. 01:03
Argument passing int main() 각종 초기화 진행 및 부팅 시작 만약 명령줄에 다음과 같이 입력되었다고 치면 read_comman_line을 통해 앞의 pintos 구동과 관련된 명령어를 제외하게 된다. pintos -v -k -T 60 -m 20 --fs-disk=10 -p tests/userprog/args-single:args-single -- -q -f run 'args-single onearg' 다음과 같은 명령어를 실행한다고 했을 때, main에 들어오게 되는 제일 처음 action과 argv는 다음과 같다. printf("Boot complete.\\n"); 후 run_actions(argv) 를 호출한다. run_action의 action 배열이 {run, 2, run_t..
-
[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 관점에서는 이 비트가 레지스터 크기를 말할수도 있다는데.. 많이 헷갈린다. 이에 대해 좀 더 ..
-
[스파르타 코딩클럽] 비개발자를 위한, 웹개발 종합반 2주차 개발일지Language/etc 2022. 3. 20. 19:56
HTML, CSS에 이어서 Javascript를 배웠다. 튜터님의 말대로 HTML은 뼈대이고 CSS는 꾸미기, Javascript는 움직이는 효과를 만들어 내는 것이라고 생각하면서 수업을 듣고 있다. Ajax, API 등 아직은 익숙하지 않은 용어들에 대해서는 어떻게 하면 친숙해질 수 있을까 고민을 많이 해봐야겠다. 이제 3주차다. 여전히 흥미는 가득하고 백엔드 쪽을 해보지 않았기 때문에 프론트엔드가 나에게는 맞는거 같다고 느껴지긴 한다. 빠르게 마무리하고 학교 공부 좀 해야겠다...
-
[스파르타 코딩클럽] 비개발자를 위한, 웹개발 종합반 1주차 개발일지Language/etc 2022. 3. 17. 23:15
솔직히 좀 막막하다. 어렵다. 개인적으로 이해가 가장 안되는 부분이나 막혔던 부분은 JS 문법. 숙제같은 경우도 기본적인 HTML을 활용하여 BODY 부분은 만들었는데(이것도 부트스트랩에서 가져온거지만), 이후에 CSS를 활용하여 꾸며가는 부분은 거의 완성된 HTML 파일을 복사 후 붙여넣기 해와서 붙여넣기 전과 후를 비교해가며 이 코드가 무엇을 의미하는지 파악해 나가는 과정으로써 숙제를 완성해 나간 것 같다. 수료가 중요하긴 하지만 빠르게 진행하는 것 보다는 천천히 이해해 나가며 진행해봐야겠다. 그리고 스파르타코딩클럽에서 게더스쿨이라는 메타버스를 활용하여 질문을 받는 것 같는데.. 아직까진 혼자 하는 것이 편하다.