본문 바로가기
728x90

운영체제22

pintOS | list_entry(), doubly linked-list pintOS는 threads, user porgrams, virtual memory, file system 등 운영체제의 개념들을 직접 구현하면서 더 깊게 이해하는데 도움을 주는 교육용 운영체제다. 핀토스는 정글에서 공부하는 프로젝트 중 끝판왕이라고 불리는 만큼 험난하다. 프로젝트를 직접 구현할 때 내가 사용하는 함수들의 작동 원리도 제대로 파악하는 것 조차 너무 어려워서 내가 사용하는 코드들의 기능과 역할을 정리해보려고 한다. 조금은 두서없이 정리하겠지만 일단 내가 이해하는 것이 우선..! list_entry() Project1: THREADS에서 첫 번째 미션인 Alarm Clock을 할 때, block되어 있는 스레드를 wakeup해서 ready list에 넣어야 하는 함수를 구현해야 한다. 이 때.. 2021. 10. 4.
운영체제(Operating System) | 스레드(Thread) 프로세스에 이어 스레드에 대해 정리하도록 하겠다. 1. 스레드(Thread)의 개념 스레드는 프로세서(CPU) 활용의 기본 단위이다. 프로세스의 제어 요소 외의 코드, 데이터 및 자원들은 프로세스의 다른 스레드들과 공유한다. 아래의 그림으로 예를 들어보자. 아래 중앙의 동그라미는 워드 문서를 편집하는 프로세스이다. 한 프로세스 안에 여러 개의 스레드가 존재하는데, 어떤 스레드는 입력과 관련된 제어, 다른 스레드는 문서에 이미지나 텍스트는 보여주는 스레드, 또 다른 하나는 데이터를 저장하는 스레드이다. 만약 스레드가 하나였다면 어떻게 되었을까? 편집기에 "안녕하세요"를 입력하려고 한다. 키보드로 "ㅇ"을 치면 입력에 응답하는 스레드가 일을 할 것이고, 그 때 동안 워드 문서창은 일을 못 한다(스레드가 키보.. 2021. 9. 28.
운영체제(Operating System) | 프로세스 관리 전 장에서 프로세스는 실행 중인 프로그램이라고 했다. 이번 글에서는 프로세스에 대해 더 자세하게 정리하려고 한다. 1. 프로세스 정의 프로세스는 실행 중인 프로그램으로, 커널에 등록되고 커널이 관리하는 작업이다. 프로세스는 각종 자원들을 요청하고 할당 받을 수 있는 개체(entity)이며, 실행 중에도 각종 자원을 요구하고 할당, 반납이 진행된다(active entity). * 자원(Resource)? 커널의 관리 하에 프로세스에게 할당/반납 되는 수동적 개체(passive entity) 하드웨어 자원: CPU, memory, 모니터, 키보드 등 소프트웨어 자원: 메시지, 시그널, 파일 등 * cf) Job vs Process 프로세스 이전에 작업(Job)이라는 개념이 있다. Job은 실행할 프로그램 +.. 2021. 9. 28.
운영체제(Operating System) | 운영체제 개요 어제를 기점으로 악명이 자자한 핀토스를 시작하게 되었다. 정글 1기 분들 핀토스 얘기 나올 때마다 모두 다 하나 같이 PTSD 오시는거 보고 겁나 쫄아 있는 상태임... pintOS, 이제 과제 시작되었는데 솔직히 뭔지 모르겠다. 운영진님들이 올려주신 GitBook을 보면, 핀토스는(pintos-kaist) 심플한 운영체제(x86-54) 프레임워크라고 한다. 커널 스레드, 사용자 프로그램 로드 및 실행, 파일 시스템을 지원하지만 이 모든 것을 매우 간단한 방식으로 구현할 것이라고 한다. (이 양반들의 심플, 간단이라는 단어하고 내가 아는 단어하고 다른 단어인 듯;;) 여하튼 핀토스 과제를 하기 위해서는 전 글에서도 계속 얘기했던 것처럼 기본적인 OS에 대한 지식이 탑재되어 있어야 한다. 전에 malloc.. 2021. 9. 28.
728x90
LIST