OS 25

[OS] 정리1

OS의 정의User 입장에서 OS :용이성과 성능을 위한 프로그램시스템 입장에서 OS : 자원 할당과 제어를 위한 프로그램 기본 구조- CPU 및 디바이스 컨트롤러(I/O 컨트롤러)들은 공유 메모리에 엑세스하며 버스를 통해 연결됨- I/O 디바이스와 CPU는 동시 실행이 가능- 각 디바이스 컨트롤러는 Local Buffer를 가짐- CPU는 메인 메모리와 Local Buffer 간의 데이터를 송/수신- I/O란, 디바이스로부터 컨트롤러의 Local Buffer까지의 데이터 전송- 디바이스 컨트롤러는 Interrupt를 발생시킴으로써 CPU에게 작업이 완료되었음을 알림 I/O 컨트롤러- CPU를 대신하여 I/O를 관리하며 실제로 I/O 명령을 수행- 내부에 Register와 Data Buffer가 존재.-..

OS 2018.09.21

[OSC7][Thread] Thread Model

Thread는 다음과 같은 것들로 구성된다.- Thread ID- Program Counter- Registers- Stack 다음은 Thread의 특성이다.- 하나의 프로세스가 다수의 스레드를 제어한다면, 프로세스는 동시에 하나 이상의 작업을 처리할 수 있게 된다.- Thread는 코드, 데이터 섹션, 열린 파일이나 신호같은 운영체제 자원들을 같은 프로세스에 속한 다른 스레드와 공유할 수 있다. 단일 스레드 프로세스와 다중 스레드 프로세스의 각 구조는 다음과 같다.이미지 출처 : 공룡책 보통의 소프트웨어들은 하나의 프로세스에 여러 개의 스레드를 가진 프로세스 하나로 구현된다. 예를 들어서 웹 브라우저는 이미지와 텍스트를 표시하는 하나의 스레드와 네트워크 통신을 하는 스레드를 가진다.옛날에는, 스레드 사..

OS/공룡책(OSC) 2014.07.17

[Pintos 개발일지] Priority scheduling 17/27 tests passed.

후... 10 of 27 tests failed로 줄였다. 자세한 코드는 내 github의 terapintos의 pass priority-donate-one으로 시작하는 곳을 참고하자. https://github.com/hsb0818/terapintos/commit/4790d3967a7a7e4b9a0735ab1bdc463208b141e9 nested donation에선 문제 없었지만 multiple에선 문제 생겼던 것인데, reset donation을 진행할 때 struct thread* pHighThread = list_entry (list_front (&lock->semaphore.waiters) , struct thread, elem); if (pCurThread->priority < pHighTh..

[Pintos 개발일지] [pass] priority-donate-nest

priority-donate-nest 테스트 케이스를 통과했다. 나머지도... 테스트 케이스 분석하면서 다 패스해보자. Nested priority donation 문제를 최종적으로 다음과 같이 해결했다. void lock_acquire (struct lock *lock) { ASSERT (lock != NULL); ASSERT (!intr_context ()); ASSERT (!lock_held_by_current_thread (lock)); struct thread* pCurThread = thread_current (); priority_donation (lock); pCurThread->hurdle = lock; sema_down (&lock->semaphore); pCurThread->hurdl..

[Pintos 개발일지] 음...Kernel Panic이나 Unexpected interrupt 0x0E 에러에 대해

Pintos를 진행하다가 Kernel Panic이나 Unexpected interrupt 0x0E 라고 뜨면서 잘 안 될 때가 있다. 구글링을 해보니 Unexpected interrupt 0x0E 에러가 뜨는 경우는 초기화되지 않은 메모리를 사용하거나.. 할 때 뜨는 에러라고 한다.Thread 관련된 doc을 보면 스레드는 메모리를 페이지(4kb) 단위로 할당받기 때문에, 이게 넘어가면 페이지 폴트 에러가 뜰 수 있다. 하지만 이 문제는 아닌 것 같다. -_-;; 그런데 pintos -q run priority-donate-nest 이렇게 -q 옵션을 사용하니까 이 에러가 없어졌다. 자세한 이유는 모르겠지만 Pintos doc에 써있는 문구가 있었다. pintos -f -q. The ‘-f’ option..

반응형