728x90

정글 128

24.03.27 운영체제, PintOS, 백준

운영체제 29. Redundant Array of Inexpensive Disk(RAID) 여러개의 디스크를 조화롭게 사용하여 고속이면서 대용량의 신뢰할 수 있는 디스크 시스템을 만든다. 외면적으로 RAID는 하나의 디스크 처럼 보인다. 읽거나 쓸 수 있는 블럭의 그룹으로 보인다. 안을 들여다보면 RAID는 여러개의 디스크와 메모리, 시스템을 관리하기 위한 하나 또는 그 이상의 프로세스로 이루어진 복잡한 기계이다. RAID 하드웨어는 컴퓨터 시스템과 매우 유사하며 디스크의 그룹을 관리하기 위한 전용 시스템이다. RAID는 단일 디스크에 비해 여러 장점들을 제공한다. 하나의 장점은 성능이다. 디스크를 여러개 병렬적으로 사용하면 I/O 시간이 크게 개선된다. 또 다른 장점은 용량이다. 데이터의 양이 많아지면..

24.03.26 퀴즈, 운영체제, PintOS, 백준

퀴즈 1. 페이지 테이블 접근 시 TLB가 어떻게 페이지 테이블의 성능을 향상시키는지 설명하고, TLB miss가 발생하면 시스템이 어떤 과정을 거쳐 메모리에 접근하는지 설명하세요. TLB는 자주 사용되는 주소 변환 정보를 빠르게 참조할 수 있도록 하는 캐시 메모리이다. TLB에 원하는 주소 변환 정보가 있으면, 페이지 테이블을 참조하지 않고 바로 물리적 주소를 얻을 수 있어 성능이 향상된다. TLB miss일 대 시스템은 페이지 테이블을 조회하여 물리적 주소를 찾고, 이 정보를 TLB에 업데이트 한다. 2. 페이징 기법을 사용하는 메모리 관리 시스템에서, 페이지 프레임 수를 늘리는데도 page fault가 발생하는 빈도가 오히려 늘어나는 경우가 있습니다. 이를 Belady의 역설이라고 하는데, 이런 현..

24.03.25 운영체제, PintOS

24.03.25 운영체제, PintOS 운영체제 27. I/O 장치 27.1 시스템 구조 시스템 설계자들은 계층 구조를 택하여 고성능 장치들을 CPU에 가깝게 배치하고 느린 성능의 장치는 그보다 멀리 배치했다. 디스크처럼 느린 장치를 주변 장치 I/O 버스에 연결하여 얻는 이득이 많은데, 그 중 하나는 많은 장치를 연결할 수 있다는 것이다. CPU는 인텔의 DMI(Direct Media Interface) 기술을 통해 I/O 칩에 연결되어 있으며, 나머지 장치들이 이 칩에 여러 다른 종류의 연결 방식을 사용하여 연결된다. 27.2 표준 장치 두 개의 중요한 요소가 있다. 첫 번째는 시스템의 다른 구성 요소에게 제공하는 하드웨어 인터페이스다. 소프트웨어가 인터페이스를 제공하듯이 하드웨어도 인터페이스를 제공..

24.03.24 운영체제

24.03.24 운영체제 운영체제 26. 이벤트 기반의 병행성(event-based concurrency) 이벤트 기반 프로그래밍은 쓰레드 기반의 병령 프로그래밍에 내제한 두 가지 문제점을 해결할 수 있다. 무엇보다 멀티 쓰레드 기반 프로그래밍은 어렵다. 자료구조를 락으로 보호하는 것을 잊을 수 있고, 교착 상태나 혹은 다른 문제들이 발생할 수 있다. 또 다른 문제는 멀티 쓰레드 프로그램에서는 개발자가 쓰레드 스케줄링에 대한 제어권을 갖고 있지 않다는 것이다. 운영체제가 CPU스케줄링에 대한 전권을 갖는다. 개발자는 운영체제가 합리적으로 쓰레드들의 실행 순서를 결정하기만을 기대할 수 밖에 없다. 26.1 개본 개념: 이벤트 루프 특정 사건의 발생을 대기한다. 사건이 발생하면, 사건의 종류를 파악한 후 I..

24.03.23 운영체제

운영체제 25. 병행성 관련 버그 25.1 비교착 상태 오류 원자성 위반 오류 다수의 메모리 참조 연산들 간에 있어 예상했던 직렬성(serializability)이 보장되지 않았다.(즉, 코드의 일부에 원자성이 요구되었으나, 실행시에 그 원자성이 위반되었다.) 문제의 해결책은 공유 변수 참조 앞 뒤에 락을 추가해준다. 이 자료구조를 사용하는 모든 코드들이 이 락을 먼저 획득해야 한다. 순서 위반 오류 두 개의(그룹의) 메모리 참조 간의 순서가 바뀌었다.(즉, A가 항상 B보다 먼저 실행되어야 하지만 실행 중에 그 순서가 지켜지지 않았다.) 오류를 수정하는 방법은 순서를 강제하는 것이다. 이러한 종류의 동기화에는 컨디션 변수가 잘 맞는다. 쓰레드간의 순서가 문제가 된다면 컨디션 변수(또는 세마포어)를 사용..

24.03.22 운영체제, KEYWORD

운영체제 24 세마포어 24.1 세마포어 : 정의 세마포어는 정수 값을 갖는 객체로서 두 개의 루틴으로 조작할 수 있다. POSIX 표준에서 이 두 개의 루틴은 sem_wait()와 sem_post()이다. 세마는 초기 값에 의해 동작이 결정되기 때문에, 사용하기 전 제일 먼저 값을 초기화 해야한다. 같은 프로세스 내의 쓰레드 간에 세마포어를 공유한다. 두 루틴들은 동시에 다수 쓰레드들에 의해 호출될 수 있다. 임계영역이 적절히 보호되어야 한다. 임계영역 보호를 위해 사용할 함수내에서 임계영역 보호문제가 존재한다. sem_wait() 함수는 세마포어 값이 1 이상이면 즉시 리턴하거나, 해당 세마포어 값이 1 이상이 될 때까지 호출자를 대기시킨다. 다수의 쓰레드들이 sem_wait()을 호출 할 수 있기 ..

Project2. User Program

Project2. User Program Git Book https://github.com/jaenam615/pintos-kaist GitHub - jaenam615/pintos-kaist: 크래프톤 정글 4기 pintOS과제 Project 1 & 2 크래프톤 정글 4기 pintOS과제 Project 1 & 2. Contribute to jaenam615/pintos-kaist development by creating an account on GitHub. github.com Krafton Jungle Week 7 Team 6 WIL Project 2 User Programs: 느낀점 참 더 어려워지기 힘들겠다라는 생각을 계속해서 무시하고 난이도는 계속 올라가는것이 신기하다. 앞으로 취직이나 살아가면서..

Study/PintOS 2024.03.21

24.03.20 PintOS

PintOS Project2가 끝이났다. 처음에는 엄청 어려웠지만 끝나는 오늘와서 생각해보니 더 어려웠다. fork ,wait 진짜 미친 난이도 정말 너무 너무 어려웠다. Project 정리로 한번에 정리해서 올리도록 하겠다. wait , exec, fork 개발을 완료했다. 아쉽게 multi_oom은 테스트 통과하지 못했다 ㅠㅜㅠ tid_t process_fork (const char *name, struct intr_frame *if_) { /* Clone current thread to new thread.*/ struct parent_info my_data; my_data.parent = thread_current(); my_data.parent_f = if_; struct thread *cur ..

24.03.19 퀴즈, 운영체제, PintOS

퀴즈 1. 커널 모드에서 실행될 수 있는 작업의 예를 들고, 이러한 작업들이 사용자 모드에서 실행되지 않는 이유를 설명하세요. 공유 자원 관리는 운영체제의 중요한 기능 중 하나로, 주로 커널 모드에서 실행된다. 예를 들어, 파일 시스템, 메모리, 프린터 등과 같은 자원은 여러 프로세스에 의해 동시에 요청될 수 있으며, 이에 대한 접근과 사용을 적절히 관리하는 것이 필수적이다. 커널 모드에서는 이러한 자원들에 접근을 제어하고, 충돌이나 데이터 손상을 방지하는 역할을 한다. 사용자 모드에서는 이러한 공유 자원의 직접 관리를 수행하지 않는다. 이는 여러 사용자 또는 프로세스가 자원에 직접 접근할 경우 데이터의 일관성과 안정성이 위협받을 수 있기 때문입니다. 2. 운영체제에서 컨텍스트 스위칭이 발생하는 과정에서..

24.03.18 운영체제, KEYWORD, PintOS

운영체제 21. 락 프로그래머들은 소스코드의 임계영역을 락으로 둘러서 그 임계영역이 마치 하나의 원자단위 명령어인것 처럼 실행되도록 한다. 21.1 락 : 기본개념 락은 둘 중 하나의 상태를 갖는다. 첫 번째는 사용가능(available) 상태 (unblocked 또는 free) 이다. 즉, 어떤 쓰레드도 락을 소유하고 있지 않다. 두 번째는 사용 중(acquired) 상태이다. 즉, 임계영역에서 정확히 하나의 쓰레드가 락을 획득한 상태이다. lock과 unlock 루틴의 의미는 간단하다. lock() 루틴 호출을 통해 락 획득을 시도한다. 만약 어떤 쓰레드도 락을 갖고 있지 않으면 그 쓰레드는 락을 획득하여 임계영역 내로 진입한다. 이렇게 락을 획득한 쓰레드를 락 소유자(owner)라고 부른다. 만약 ..

728x90