728x90

정글 128

24.03.17 운영체제, PintOS

운영체제 20. 병행성 : 개요 하나의 쓰레드의 상태는 프로세스의 상태와 매우 유사하다. 쓰레드는 프로그램 카운터와 연산을 위한 레지스터들을 가지고 있다. 만약 두 개의 쓰레드가 하나의 프로세서에서 실행 중이라면 실행하고자 하는 쓰레드는 반드시 문맥교환을 통해 실행중인 쓰레드와 교체 되어야 한다. 프로세스의 쓰레드들의 상태를 저장하기 위해서는 하나 또는 그 이상의 쓰레드 제어블럭(TCB : thread control block)이 필요하다. 프로세스와의 가장 큰 차이는 프로세스의 경우와 달리 쓰레드간의 문맥 교환에서는 주소공간을 그대로 사용한다는 것이다.(사용하고 있던 페이지 테이블을 그대로 사용하면 된다.) 쓰레드와 프로세스의 또 다른 차이는 스택에 있다. 고전적 프로세스 주소 공간과 같은 모델(단일 ..

24.03.16 운영체제, PintOS

운영체제 19. 완전한 가상 메모리 시스템 19.1 VAX/VMS 가상 메모리 VMS는 컴퓨터의 구조적 결함을 소프트웨어로 보완한 훌륭한 사례다. 운영체제가 이상적인 개념과 환상을 제공하기 위해 하드웨어에 의존하지만, 하드웨어가 모든것을 해내지 못할 경우도 있다. 하드웨어 결함에도 불구하고 시스템이 효과적으로 작동하기 위해서 VMS 운영체제가 무엇을 하였는지 볼 것이다. 메모리 관리 하드웨어 VAX-11은 프로세스마다 512바이트 페이지 단위로 나누어진 32비트 가상주소 공간을 제공한다. 가상주소는 23비트 VPN과 9비트 오프셋으로 구성되어있다 VPN의 상위 두 비트는 페이지가 속한 세그멘트를 나타내기 위해서 사용되었다. 이 시스템은 하이브리드 구조를 갖고 있다. 주소공간의 하위 절반은 ‘프로세스 공간..

24.03.15 운영체제, PintOS

운영체제 18. 물리 메모리 크기의 극복 : 정책 빈 메모리 공간이 거의 없으면 운영체제는 메모리 압박(memory pressure)을 해소하기 위해 다른 페이지들을 강제적으로 페이징 아웃(Paging out)하여 활발히 사용중인 페이지들을 위한 공간을 확보한다. 내보낼(evict) 페이지 선택은 운영체제의 교체정책(replacement policy) 안에 집약되어 있다. 18.1 캐시관리 캐시 히트와 미스의 횟수를 안다면 프로그램의 평균 메모리 접근 시간(AMAT : average memory access time)를 계산할 수 있다. AMAT = TM + (PMISS - TD) TM : 메모리 접근 비용 TD : 디스크 접근 비용 PMISS : 캐시에서 데이터를 못 찾을 확률 메모리의 데이터를 접근하..

24.03.11 운영체제, KEYWORD

운영체제 14. 페이징 개요 공간을 동일 크기의 조각으로 분할하는 것을 페이징(Paging)이라 부른다. 프로세스의 주소 공간을 몇 개의 가변 크기의 논리 세그멘트로 나누는 것이 아니라 고정 크기의 단위로 나눈다. 이 각각의 고정 크기 단위를 페이지(Page)라고 부른다. 상응하여 물리 메모리도 페이지 프레임(Page Frame) 이라고 불리는 고정 크기의 슬롯의 배열이라고 생각한다. 이 프레임 각각은 하나의 가상 메모리 페이지를 저장할 수 있다. 14.1 간단한 예제 및 개요 물리 메모리는 고정 크기의 슬롯들로 구성된다. 가상 주소 공간의 페이지들은 물리 메모리 전체에 분산 배치되어 있다. 페이징의 장점은 유연성이다. 페이징을 사용하면 프로세스의 주소공간 사용 방식과는 상관없이 효율적으로 주소공간 개념..

24.03.10 운영체제, PintOS 정리

운영체제 13. 빈공간 관리 빈공간 관리는 관리하고 있는 공간이 고정 크기의 단위로 나누어져 있는 경우 쉽다. 그런 경우 고정 크기 단위의 리스트를 유지하면 된다. 클라이언트가 그 중 하나를 요청하면 첫 번째 항목을 반환하면 된다. 빈공간 관리가 더 어렵고 흥미로운 경우는 관리하는 공간이 가변 크기 빈 공간들의 집합으로 구성되어 있는 경우다. 이 경우 malloc()과 free()에서 처럼 사용자 수준 메모리 할당 라이브러리에서 그리고 세그멘테이션으로 물리 메모리를 관리하는 운영체제에서 발생한다. 어느 경우에도 외부 단편화가 존재한다. 13.1 가정 malloc()과 free()에서 제공하는 것과 같은 기본 인터페이스를 가정한다. 이 라이브러리가 관리하는 공간은 역사적으로 힙으로 불리며, 힙의 빈공간을 ..

24.03.09 운영체제, PintOS

운영체제 12. 세그멘테이션 스택과 힙 사이의 공간은 사용되지 않더라도 주소 공간을 물리메모리에 재배치 할 때 물리 메모리를 차지한다. 베이스 바운드 레지스터 방식은 메모리 낭비가 심하다. 또한, 주소 공간이 물리 메모리보다 큰 경우 실행이 매우 어렵다. 이런 측면에서 베이스와 바운드 방식은 유연성이 없다. 12.1 세그멘테이션 : 베이스/바운드의 일반화 세그멘테이션 아이디어는 MMU에 하나의 베이스와 바운드 값이 존재하는 것이 아니라 세그멘트마다 베이스와 바운드 값이 존재한다. 세그멘트는 특정 길이를 가지는 연속적인 주소 공간이다. 우리가 기준으로 삼은 주소 공간에는 코드, 스택, 힙의 세 종류의 세그멘트가 있다. 세그멘테이션을 사용하면 운영체제는 각 세그멘트를 물리 메모리의 각기 다른 위치에 배치할 ..

7Week 24.02.29 - 24.03.06 부제 : 극뽁!

회고 PintOS의 1주차가 끝났다. PintOS는 Project 1,2,3로 나누어져 있다. 1,2 Project는 3주로 구성되어 10일정도로 나누어진다. 그중 7일이 끝났다. 악명이 되게 높았던 PintOS 얼마나 심할까 심할까 생각했지만 정말 많이 어려웠다. 느낀점은 뒤에 더 이어서 쓰도록 하겠다. KPT 회고 Keep, Problem, Try의 약자로 Keep은 잘 한 것, Problem은 아쉬운 것, Try는 K와 P기반으로 무엇을 할지에 대해 작성하는 방법이다. K : 잘 해와서 유지하고 싶은 것 P : 어려움을 느껴서 개선하고 싶은 것 T : 구체적인 시도할 내용 프로젝트 설명 PintOS의 Project1 thread 10일중 1주 정도이다. thread와 스케줄링에 관한 많은 부분을 구..

24.03.08 운영체제, PintOS 진행정도

운영체제 11. 주소변환의 원리 메모리 가상화는 가상화를 제공하는 동시에 효율성과 제어 모두를 추구한다. 효율성을 높이려면 하드웨어 지원을 활용할 수 밖에 없다. 제어는 응용 프로그램이 자기 자신의 메모리 이외에는 다른 메모리에 접근하지 못한다는 것을 운영체제가 보장하는 것을 의미한다. 유연성 측면에서 프로그래머가 원하는대로 주소공간을 사용하고 프로그래밍 하기 쉬운 시스템을 만들기를 원한다. 주소변환(Address translation)을 통해 하드웨어는 명령어 반입, 탑재, 저장 등의 가상주소를 정보가 실제 존재하는 물리주소로 변환한다. 프로그램의 모든 메모리 참조를 실제 메모리 위치로 재지정하기 위하여 하드웨어가 주소를 변환한다. 운영체제는 메모리의 빈 공간과 사용중인 공간을 항상 알고 있어야 하고,..

8Weeks_CoffeeChat

CoffeeChat 카이스트 핀토스 영상이 있던데, 어떻게 구현하는지 이정표 정도만 나온다고 한다. 이런것을 보고 좀 참고해도 될까요? 된다면 어느정도 봐야할까요? 이정표가 없어서 내 아키텍처가 맞는지 검증이 안되는게 큽니다. 베스트는 안보는게 맞다. 하지만 너무 어렵고, 길이 안보인다면 개인이 잘 잘라내어서 보는것도 하나의 방법이다. 이론적인 부분과 핵심적인 부분을 잘 캐치해라. Project1 에서 중요한 것은 thread이다. thread와 스케줄링을 잘파악하고 알아봐라. 아키텍쳐의 경우 설계철학이 중요하다. 큰 틀에서 맥락을 이해라고 작게 나눠가며 짜면 좋다. 이론적인 부분이 어렵다면 개념적인 부분과 구현으로 교차비교하면 좋다. 키워드 정리가 이해는되지만 안외워질때가 많은데 어떻게 해야할까요? 키..

7Weeks_CoffeeChat

CoffeeChat 18.04 버전을 사용해서 PintOS를 배우는 이유 개발 환경상 버전에 따라서 작동하는 방식이 조금씩 달라진다. Pair Programming을 필수적으로 해라. 이합집산을 잘하고, 팀마다 어떻게 할지 잘 생각해서 정해라. 구현을 우선으로 진행하고, 팀마다 맞는 상황으로 진행해라 전체 맥락을 이해하는 것이 중요하다. 얼마나 깊게 파야하는지? 이번 기회에 적당히 깊게 파는것은 괜찮아보인다. 하지만 너무 깊게 파고 들어가지말고 정도를 정해놓아라. 과거에는 빅뱅까지 갔던 사람도 있었다. PintOS를 볼 때 어느정도는 짤라서 봐야할 때가 있다. 코드가 크기 때문에 파다보면 길을 잃을수도 있다. Appstraction에서 바라봐라 디자인 설계 추상화들의 인터랙티브를 먼저 보고, 디테일을 그..

728x90