OS38 [Project 2_User Programs]_Argument Passing(인수전달) 현재 핀토스 process_exec()파일을 보면 새로운 프로세스에게 인수전달을 하지 않는다고 한다. 따라서 process_exec()를 수정하여 위 기능을 구현해야 한다. 단순히 파일이름을 인수로 사용하는 대신 공백을 기준으로 단어를 나누어 전달해야 한다. 첫번째는 프로그램의 이름, 두번째 단어부터는 첫번째 인수 이다. 예를들어 process_exec("grep foo bar") 라고 한다면 파일명은 grep, foo와 bar는 각각 첫번째 두번째 인자가 되도록 파싱해 주어야 한다. strtok_r()을 이용 원하는 방식으로 인수 문자열을 구문 분석할 수 있다. 한양대 핀토스 pdf자료를 토대로 본 part2의 흐름과 구현해야하는 부분 우리 과제 부분에서 start_process()는 process_e.. 2022. 1. 4. [Project 2_User Programs]_Intro project 2 Intro 프로 젝트 2에서는 프로그램과 OS 사이 시스템 콜을 통해 상호작용을 하는 것에 관하여 다루어 본다고 한다. 프로젝트 1을 통과 못했다면 2에 영향이 있으니 프로젝트 1의 Advanced Scheduler 전까지 완료를 하고 이어 가자. 하나이상의 프로세스가 동시에 진행하도록 해야 한다. 멀티스레드는 지원하지 않고 각 프로세스는 하나의 스레드를 가진다 사용자 프로그램은 가상의 Machine에서 쓰였다고 생각하고 메모리 스케쥴링, 기타 다른 상태들도 관리하여 이 Machine을 올바르게 유지시켜야 한다. project 2를 진행하기에 추천하는 사전 지식 synchronization, virtual addrees 이전 thread프로젝트에서는 테스트를 진행할 때 코드를 커널에 직.. 2022. 1. 1. 8.Main memory management(2)_Memorry Allocation Countinous Memoty Allocation > 프로세스(context)를 하나의 연속된 메모리 공간에 할당하는 정책이다. ex) 프로그램, 데이터, 스택 등 이렇게 메모리를 할당하기 위해서는 다음 사항을 고려해야 한다. 1. 메모리에 동시에 올라갈 수 있는 프로세스의 수(Multiprogramming degree) 2. 각 프로세스에게 할당되는 메모리의 공간 크기 3. 메모리 분할 방법 Uni-programming 멀티프로그래밍 디그리 = 1 인 프로그래밍 프로세스가 한 번에 하나만 시스템에 올라가는 프로그래밍으로 간단하다 유니프로 그램의 문제점 1. 만약 프로그램의 크기가 메모리의 크기보다 크다면? 어떻게 될까? Countinous Memoty Allocation에서는 프로그래밍 전체가 한 번.. 2022. 1. 1. 8.Main memory management(1)_용어와 개념리마인드 메모리 관련 글 메모리시스템 메모리는 cpu가 프로그램을 실행하거나 데이터를 참조하기위 해 필요한 정보를 불러오는 공간이다. 메모리 계층 구조란 메모리를 필요에 따라 여러가지 종류로 나누어 둔 것으로 위에서부터 CPU younsw.tistory.com 메모리(기억장치)의 종류 피라미드의 위쪽으로 갈수록 메모리 용량은 작아지고 비싸며 빠르고 아래로 갈수록 용량은 크고 저렴하지만 느리다. 캐시 레지스터는 HW(CPU)가 관리하고 메인 메모리, 보 조거 억장 치는 SW(OS)가 다룬다. 메모리를 배우기 전 백그라운드 용어 정리 Block 보조기억 장치에서 주기억 장치로 올리는 데이터의 최소 단위이며 OS에 따라 보통 1~4KB이다. 우리가 1bit을 가 필요하더라도 블록단위로 올라온다 word word는 주기.. 2021. 12. 30. 7.Deadlock Resolution 데드락의 개념 데드락은 위의 이미지처럼 어떤 프로세스들도 자신이 원하는 자원을 얻을 수 없어 일을 할 수 없는 상태를 말한다. Blocked/Asleep 상태 즉 프로세스가 특정 이벤트 또는 자원을 기다리는 상태에서 발생할 가능성이 없는 이벤트를 기다리는 경우 프로세스가 deadlock상태에 빠졌다고 한다. 시스템내에서 dealock에 빠진 프로세스가 있다면 시스템이 deadlock상태에 있다고도 말한다. 그럼 이전에 배운 Starvation 상태와 데드락 상태의 차이점은 무엇일까? starvation vs deadlock starvation 은 프로세스가 CPU를 기다리는 상태에서 운이 없게도 계속 자신보다 우선순위가 높은 아이들이 들어와 뒤로 밀리거나 하는 등의 이유로 CPU를 할당받지 못해 무한 대.. 2021. 12. 30. [Project_1_THREADS]_Priority Scheduling_2 Priority Inversion 카이스트 핀토스 가이드 설명에서 Priority inversion은 어떠한 것이며 우리가 무슨 상황을 해결해야 할지 설명해 주고있다. 간략하게 말하자면 H, M, L의 우선순위가 있고 딱 한명만 사용가능한 자원 LOCK 이 있다고 했을때 처음에 L이 LOCK을 가지고 작업을 하는도중 H가 들어오면 L은 작업대는 H에게 넘겨주지만 자신의 LOCK은 들고가버린다. 그럼 H도 LOCK이 필요하다 했을때 L때문에 작업을 못하고 작업대를 양보한다. 대기리스트에 있던 M이 빈 작업대를 들어오고 M은 LOCK이 필요없기 떄문에 자신의 작업을 끝마치고 나간다. 그후 작업을 못하고 밀려난 L이 돌아와 작업을 마무리하고 LOCK을 반납하면 그제서야 H가 LOCK을 받아 작업을 마친다. 이.. 2021. 12. 30. 이전 1 2 3 4 5 6 7 다음