OS
-
[OS] File DescriptorComputerScience/OS 2024. 3. 18. 20:30
pintOS 시스템 콜을 구현하던 와중 파일, 파일 디스크립터, 파일 디스크립터 테이블 등과 같은 피상적으로만 알고 있던 개념이 나왔다. 이에 대해 이들이 무엇이고 왜 사용되며, 어떻게 사용되는지 알아보아야 구현이 가능하다 생각해 정리를 한 번 하고 넘어가고자 한다. 파일 디스크립터(File Descriptor) 파일 디스크립터는 운영체제가 파일을 다루기 위해 사용하는 추상화된 핸들이다. 즉, 파일이나 입출력 같은 복잡한 객체를 다룰 때 직접적인 세부 정보나 구현 방식 대신 간단한 식별자를 사용하는 것이다. 정수로 표현되며, 운영체제의 파일 시스템 테이블에 있는 파일이나 입출력 리소스를 가리킨다. 각 프로세스는 자신만의 파일 디스크립터 테이블을 가지고 있으며, 이 테이블을 통해 파일이나 기타 입출력 리소..
-
[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 관점에서는 이 비트가 레지스터 크기를 말할수도 있다는데.. 많이 헷갈린다. 이에 대해 좀 더 ..