본문 바로가기

공부/OS23

[운영체제] 가상 메모리 : two-level paging 가상 메모리 정리하는데, 가장 중요한 부분을 빼먹었다. 진짜로 가장 중요한 건 아니고 내가 발표해야할 부분이어서 가장 중요하다. 발표 내용 : IA-32 two-level paging paging 기법을 이용하면 두 가지 문제점이 발생한다. 1. 속도 2. 메모리 낭비 속도 문제는 TLB 를 사용해 해결했었다. 32 비트 주소와 4kb 의 페이지 크기를 사용하면 페이지 테이블 하나의 크기는 4mb 가 된다. (2^20 * sizeof(PTE, 4byte) = 4mb) 사용하지 않는 페이지의 수가 많을 경우 그만큼 메모리 낭비가 된다. 간단한 해결 방법으로 page size 를 늘릴 경우 내부 단편화 문제가 생기고, inverted page table(VPN -> PFN 매핑이 아니라 PFN -> VPN .. 2021. 5. 16.
[운영체제] 병행성 (concurrency) 병행성 무어의 법칙 : 반도체 집적회로의 성능이 18개월마다 2배로 증가한다는 법칙이다. 근데 본인은 18개월이라고 말한 적 없고 24개월이라고 말했다고 한다. 2010 년 즈음부터 CPU 의 계산 속도는 둔화되기 시작했다. 이유는 열역학의 물리적인 한계 때문이다. 5nm 공정까지 가면 원자의 전자가 다른 곳으로 워프하는 문제가 발생한다. 하지만 삼성에서 5nm 공정에 성공했다. 삼성은 외계인을 가두고 있는 것이 이로써 확실해졌다. 하지만 생산 비용은 매우 높아졌다. CPU 속도의 한계 때문에 멀티 프로세서가 도입되었다. 여러 코어를 돌려 성능을 높인다. 그래서 병렬성을 증가시키는 게 중요하다. 병행성(concurrentcy) : 동시에 동작하는 것처럼 동작. 코어가 하나여도 된다. 병렬성(paralle.. 2021. 5. 16.
[운영체제] 스와핑 (swapping) 스와핑 메모리를 모두 사용했을 때 새로운 프로세스를 실행할 수 있을까? 스와핑을 이용하면 실행할 수 있다. 스와핑은 메모리에 있는 데이터를 디스크에 있는 데이터와 바꾸는 작업이다. 스왑 스페이스 : 하드디스크를 이용하는 것 얘기 초반에 피지컬 메모리만 있을 때 문제점 : 메모리 크기가 충분하지 않으면 모든 프로그램을 적재할 수 없다. 아이디어 페이징 시스템을 사용하고 있을 때 사용하지 않는 프레임이 있다면 그 부분을 디스크에 저장하고 디스크에 있는 페이지를 메모리로 올린다. 프로세스가 메모리 접근 -> (if 메모리에 없다) 스와핑이 일어난다. -> 디스크에서 가져온다. -> 메모리에 다시 엑세스 운영체제에서 어떤 페이지를 가져오라는 명령을 줄 수 있어야 한다. 스와핑은 cpu가 자동으로 할 순 없고 운.. 2021. 5. 4.
[운영체제] 가상 메모리 2 (paging) 페이징을 시작하기 앞서, 프로젝트2 하기 전에 정리한 내용(Segmentation)들... 일단 교수님이 IA-32 인텔 아키텍쳐 매뉴얼을 보면 도움이 된다고 하셨는데,... pdos.csail.mit.edu/6.828/2005/readings/ia32/IA32-3.pdf 그 내용이 여기에 있다. 영어로 800페이지 있는 거 보고 깔끔하게 무시했다. 프로젝트2 요구사항은 geekOS 에서 segmentation 을 이용하여 userseg.c 파일을 완성하는 것이다. userseg.c 의 Create_User_Context(), Load_User_Program() 함수를 완성하면 되었다. C언어가 이렇게까지 어려워질 수 있구나라는 걸 프로젝트2 하면서 느꼈다. LDT : Local Descriptor Ta.. 2021. 5. 2.
운영체제 중간고사 후기 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.