- [ 크래프톤정글/PintOS ]보호글 입니다.2022-12-26 16:54:39보호되어 있는 글입니다.
- [ 크래프톤정글/PintOS ][CS] PintOS Project 2 - User Program(3) - System Calls(feat. User Memory) - 추가예정2022-12-25 03:21:48목표: system call - infrastructure(기반 인프라) 구현(feat. User Memory Access) User Memory Access syscalls 을 구현하려면, 사용자 가상 주소 공간(user virtual address space)에서 데이터를 읽고 쓰는 방법을 제공해야 한다. arguments를 얻을 때 이 기능은 필요하지 않다. 하지만 시스템 콜의 인자들로 제공된 포인터에서 데이터를 읽을 땐 이 기능을 통해 중계해야 한다. 하지만 이 기능을 구현하는 것은 조금 까다로울 수 있다. 만약 사용자가 유효하지 않은 포인터, 커널 메모리를 가리키는 포인터 또는 해당 영역 중 하나에 부분적으로 블록을 제공하면 어떻게 될까? user process를 종료(terminating)하여..
- [ 크래프톤정글/PintOS ][CS] PintOS Project 2 - User Program(2) - Argument Passing2022-12-24 21:55:16목표: User Program에서 argument(인자) 를 설정하도록 process_exec() 함수를 수정해라 x86-64 Calling Convention(함수 호출 규약) 이 섹션에서는 64bit x86-64 에서 일반적으로 함수를 호출할 때 convention의 중요한 포인트를 요약한다. For more detail, you can refer System V AMD64 ABI. 잠깐, KAIST gitbook을 공부하기 전에 함수 호출 규약(Calling Convention) 개념을 정리하고 가자. 함수 호출 규약을 이해하기 위해서는 stack 과 stack frame에 대한 정확한 이해가 있어야 한다. 각각의 thread 마다 stack이 생성되고, 각각의 함수마다 stack frame이 존재..
- [ 크래프톤정글/PintOS ][CS] PintOS Project 2 - User Program(1) - Introduction2022-12-24 19:12:44PintOS에 이미 user program을 load하고 실행할 수 있는 베이스 코드를 제공하고 있지만, I/O나 interactivity는 제공하지 않는다. 이 프로젝트에선 시스템 콜을 통해 프로그램이 OS와 interact(상호작용) 하도록 만드는 것이 목표이다. 이번 과제에서 작업할 주요 디렉토리는 userprog 이지만, 거의 모든 PintOS의 내부 파트마다 상호작용할 것이다.(다른 디렉토리도 참고할 것이란 것) 아래에 관련있는 파트를 설명한다. 프로젝트 1에서 제출한 과제 위에서 프로젝트 2를 빌드해야 한다. 프로젝트 1의 코드는 프로젝트 2의 코드에 영향을 미치진 않지만, 프로젝트 1은 증분 프로젝트이므로 여전히 테스트 사례를 통과해야 합니다. 확장 과제는 옵션이며, 해당 과제는 뼈대를 포함..
- [ 크래프톤정글/PintOS ][CS] PintOS - Thread(Alarm Clock and Priority Scheduling) 구현2022-12-24 15:59:16Alarm Clock 💡 요구사항 timer_sleep() , defined in devices/timer.c 현재 작동하는 구현 방식은 busy wating 방식, busy waitng 방식을 개선한다. 기존 Busy Waiting 방식 현재 시간을 확인하고, thread_yield() 함수를 호출하며 일정 시간이 지날 때 까지 while 루프를 돈다. /* Suspends execution for approximately TICKS timer ticks. */ void timer_sleep (int64_t ticks) { int64_t start = timer_ticks (); // 현재 시간 구하기 ASSERT (intr_get_level () == INTR_ON); while (timer_elap..
- [ 컴퓨터 과학/운영체제 ][CS] 공유 자원(Shared Resource)과 임계구역(Critical Section), 세마포어(Semaphore) - 추가예정2022-12-21 11:00:28프로세스는 독립적으로 작업을 할 수도 있고, 공유된 자원을 가지고 공동 작업을 할 수도 있다. 하지만 여러 프로세스가 한정된 자원을 가지고 공동으로 작업할 때 발생할 수 있는 문제와 이를 해결할 수 있는 방법을 알아보고자 한다. 공유 자원의 접근 공유 자원(Shared Resource)은 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등을 말한다. 공유 자원은 공동으로 이용되기 때문에 누가 언제 데이터를 읽거나 쓰느냐에 따라 그 결과가 달라질 수 있다. **따라서 프로세스들의 공유 자원 접근 순서를 정하여 예상치 못한 문제가 발생하지 않도록 해야 한다.** HTML 삽입 미리보기할 수 없는 소스 임계구역(Critical Section) 공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의..