본문 바로가기

Contents168

운영체제 중간고사 후기 1. 문제 대부분의 과목에나 해당되는 말이지만, 대학교 문제가 가장 컴플레인 할 부분이 많은 것 같다. 중의적인 표현, 인과 관계가 역전된 문제, 강의 내용과 다른 정답 등... 사실 강의 내용과 다른 건 정정 요청하면 되는 부분이지만 중의적인 표현은 조금 더 신경써 주셨으면 좋겠다. 복학 후 첫 시험이라 방심했다. 틀린 문제 중 두 문제는 정답을 보고도 왜 틀렸는지 모르겠다. 2. 온라인 시험 계산 문제가 많았다. 하지만 시간도 많이 남았다. 무감독 오픈북 시험이었지만 검색할 만큼 어려운 문제는 없었다. 중의적인 표현이 있더라도 교수님 의도를 파악하고 수정할 시간이 있었다. 계산을 검토할 시간도 있었다. 하지만 온라인 특성상 부정행위 적발이 힘들기 때문에 문제 뒤로가기가 막혀 있었고 한 문제씩 풀 수 .. 2021. 4. 21.
[운영체제] 가상 메모리 1 (virtual memory) physical memory 프로세스에서 피지컬 메모리를 사용할 경우 문제점 process protection isolation 피지컬 메모리를 사용하면 악성 프로세스를 막을 수 있는 방법이 없다. 커널도 같은 공간을 사용하기 때문에 over write 될 수 있다. 이는 매우 심각한 문제이다. 또한 프로세스는 고정된 포인터를 사용하기 때문에, 프로세스가 여러 개가 된다면 문제가 생길 수 있다. 2번 프로세스에서 1번 프로세스의 코드에 접근할 가능성이 있다. 해결 방법 고정된 메모리 주소 프로그램을 로드할 때 주소를 수정 PC(EIP) 와 비교한 상대 주소 사용 하드웨어 지원을 이용 (가상 메모리) 고정된 메모리 주소 위에서 살펴본 상황과 같다. 프로세스가 하나일 경우에는 별다른 문제가 없을 것이라 예상.. 2021. 4. 20.
[운영체제] 프로세스 스케줄링 2 (process scheduling) 이전 글에서 공부했던 것은 클래식한 스케줄링 방법이고, 이번 글에서는 조금 더 복잡한 스케줄러에 대해 공부한다. Priority Scheduling 우선순위 스케줄링, 사실 SJF, STCF 스케줄러도 우선순위 스케줄러이다. 앞서 공부했던 이 스케줄러들의 문제점은 무엇일까? startvation 굶주림 문제가 있다. 계속해서 높은 우선순위의 프로세스가 들어온다면 우선순위가 낮은 프로세스는 오랫동안 실행되지 않는다. 이러한 문제를 해결해 보자! EDF Eariest Deadline First 데드라인이 빠른 프로세스를 먼저 실행하는 것이다. 당연한 얘기지만 preemtive 한 스케줄러이다. 이 스케줄러가 유명한 이유는 데드라인에 대해서 최적이기 때문이다. 이 스케줄러로 데드라인을 맞출 수 없다면 어떤 스.. 2021. 4. 20.
[운영체제] 프로세스 스케줄링 1 (process scheduling) 운영체제의 스케줄러는 어떤 프로세스를 실행할 것인가를 결정해야 한다. 학부 수준에서는 CPU 를 하나만 사용하는 유니 프로세스 스케줄링만 다룬다. 스케줄러를 결정할 때 다음을 고려해야 한다. 프로세스 특성 CPU bound : CPU 중심 작업 I/O bound : I/O 중심 작업 제약 조건 : 데드라인 운영체제의 특성 preemption 을 허용하는가? 사용자 특성 interactvie 한가? 엄밀하게 나누면 스케줄러와 디스패처가 있다. scheduler : 어떤 프로세스를 실행시킬 지 결정한다. dispatcher : 현재 프로세스와 선택된 프로세스를 컨텍스트 스위칭 해 준다. 스케줄링은 어느 시점에서 해야하는가? 현재 프로세스가 종료되었을 때 현재 프로세스가 waiting queue 로 빠졌을 때.. 2021. 4. 19.
[운영체제] 프로그램 로딩(program loading) 프로그램을 메모리에 적재하는 것도 OS의 역할 중 하나이다. 프로그램을 실행하기 위해서는 적절한 포맷을 가지고 있어야 한다. 여기서 살펴볼 것은 elf 포맷이다. elf 포멧은 3가지로 나눌 수 있다. elf header program header table section header table elf : 엔트리 포인트, ... progrma header : segment list, ... section : 영역 (.text, .data, ...) elf header 에는... e_ident : 매직넘버, 첫 4바이트는 7f 'ELF' 가 들어있다. 7f 는 바이너리이다. e_endtry : 엔트리 포인트 phoff : 프로그램 헤더 위치 shoff : 세그먼트 헤더 위치 (phoff 랑 .. 2021. 4. 19.
[운영체제] 운영체제 만들기 32비트 인텔 CPU를 가정한다. bios 는 다루지 않는다. 키보드, 디스크, 화면을 다룬다. general purpose registers EAX, EBX, ECX, EDX stack registers ESP, EBP EBP 는 base pointer 인데, 현대의 컴파일러들은 EBP 를 거의 사용하지 않는다. other registers EIP, EFLAGS(bit vector of flags, stroes things like carry, ...) 메모리의 값을 바로 메모리에 넣을 수는 없고 반드시 레지스터를 거쳐야 한다. 운영체제에 따라 RAX, EAX, AX 로 나눌 수 있고 이전 버전과 호환되어야 한다. AX 는 AH + AL 로 나눌 수 있다. jmp : 무조건 점프 jz : zero 면 .. 2021. 4. 19.
[운영체제] 스레드(thread) Threads thread : 실 이라는 뜻이다. 하나의 제어 흐름. control flow 웹 서버 - 클라이언트같은 경우 여러 개의 제어 흐름을 가져야 하는데, 이 경우 프로세스보다 스레드를 이용하는 것이 유리하다. 스레드는 글로벌 변수, 코드, 파일 디스크립터 등을 공유하기 때문에 만드는 데 걸리는 비용이 적고 컨텍스트 스위칭의 오버헤드도 적게 든다. 스레드는 힙 영역은 공유하고 레지스터와 스택 영역은 따로 가진다. 유저 레벨 스레드 : 라이브러리 형태로 구현되어 있다. POSIX 의 pthread 가 대표적이다. 윈도우랑 자바에서 사용한다. 유저 레벨 스레드라고 해서 커널 스레드를 갖지 않는 것이 아니라 커널 스레드와 매핑 된다. 커널 스레드 : 대부분 운영체제에서는 스레드를 지원하고 잇다. 유저.. 2021. 4. 19.
[운영체제] 컨텍스트 스위칭은 언제 일어나야 하는가? 컨텍스트 스위칭은 언제 일어나야 하는가? 다음 4 가지 경우가 있다. 프로세스가 CPU 를 양보하는 경우 프로세스가 시스템 API 를 호출하는 경우 프로세스가 I/O 를 요청하는 경우 timer interrupt 프로세스가 자발적으로 CPU 를 포기하는 경우 임베디드같이 프로세스를 적게 사용하는 경우 프로그래머가 조절해서 사용이 가능하다. 하지만 고의 혹은 실수로 하나의 프로세스가 CPU 를 계속해서 차지하는 경우가 발생할 수 있다. 시스템 API 호출을 이용하는 경우 시스템 API 호출 이후 다시 원래 프로세스로 돌아가는 것이 아니라 컨텍스트 스위칭을 시킨다. 사용자 상호작용이 많은 경우 사용이 가능하다. 문제점 : 시스템 API 를 호출하지 않는 프로그램의 경우 장기간 CPU 를 사용할 수 있다. I.. 2021. 4. 18.
어떻게 공부할 것인가 book.naver.com/bookdb/book_detail.nhn?bid=8493487 어떻게 공부할 것인가 학습 능력이 100세까지 행복한 인생을 만든다!학습과 기억의 원리에 대한 실증적 연구에 따르면, 정석으로 여겨지는 학습 방식은 대부분 ‘헛수고’라고 한다. 밑줄 긋기, 강조하기, 벼락치기, book.naver.com 공부법에 관련된 책은 두 번째이다. 두 번째 읽어서 느낀 점은 사실 첫 번째 책 내용이 잘 기억이 안 나서... 근데 인출을 강조하고 한 가지에 집중하지 말라는 공통점이 있다. 이 책에 의하면 공부법은 다음과 같은 전략을 사용하는 게 효과적이다. 인출 연습 -> 간격 두기 -> 교차 학습. 인출은 공부했던 내용을 내용을 보지 않고 생각해 내는 것이다. 많은 학습자들이 반복해서 읽는 .. 2021. 4. 18.