목록공대 (9)
운동하는 공대생

안녕 오늘은 주말인데 일기를 쓰는 중임 오늘 아침부터 대학원 구술 면접 도움이? 그런 걸 했는데 내가 왜 긴장이 됐는지... 뭔가 다들 열심히 노력하는 모습을 다시 보니까 나도 자극이 다시 온 느낌임 다들 좋은 결과 있었으면 좋겠네 나도 사실 완전 초반이라 면접을 본 게 생생한데 나도 그 당시에 엄청 떨면서 대기를 했던 기억이 있어서 오늘 뭐가 대기를 하면서 뭘 물어보는 사람이 있으면 더 긴장을 풀라고 이야기를 했음 사실 당사자 입장에서는 그런 조언이 귀에 들어오지는 않겠지만... 아침에는 컴공 대학원 시험이 있었는데 오늘 면접을 보러 온 사람들이 거의 정장을 많이 입고 있어서 놀랐음 사실 나는 면접 때 셔츠 하나만 입고 와서 ㅋㅋㅋㅋㅋ 면접은 3시간? 그 정도 한 거 같고 사실 그 안에서 계속 면접을 ..

1. MotivationOS 는 process 구조를 통해서 보안과 독립성을 가진다. 하지만 이런 방식은 multi-core에서 비효율을 야기하고 또한 여러개의 process를 새로 생성하는것은 굉장히 많은 비용이 든다는 문제가 있다. 그래서 이런 문제를 해결하고자 Thread가 등장하게 되었다. 2. ThreadThread는 기본적으로 프로그램을 실행을 하기 위해서 존재하면 각각의 Thread ID와 프로세스의 실행에 필요한 register 그리고 stack이 존재한다. 또한 프로그램을 데이터를 관리하는 메모리 주소는 같은 공간을 활용한다. 또한 thread 끼리는 보안성을 가지지 않으며 데이터, 코드, 힙을 같이 공유한다. 결과적으로 process를 생성하고 switch하는 비용보다 thread를 ..

1. SwappingSwapping이란 먼저 물리적 메모리에 공간(RAM)이 충분하지 않을 때 발생합니다. 즉 실행을 해야 하는 프로세스를 저장 공간의 부족으로 잠시 다른 스토리지에 프로세스를 옮겨두는 방식을 말한다. 예를 들어 물리적 주소가 cache라고 한다면 저장 공간이 적어서 많은 프로세를 동시에 메모리에 저장을 하기가 어려우니 실행 중이지 않은 그런 프로세스를 디스크에 위치시킨다. 메모리의 계층으로 본다면 각각의 메모리가 공간의 부족으로 메모리가 더 많은 메모리로 저장하는 그런 위치는 모든 메모리에서 가능하며 이것을 backing store 이라고 이야기한다.2. SwapMemory overlays이 방식은 가장 원시적인 방법으로 코드나 데이터를 프로그래머가 변경을 해주는 방식이다.Process..

1. Idea프로그램이 작동할 때 프로세스나 많은 작업들이 리소스를 사용하는데 여기서 동시에 작동하는 thread에서 공유된 자원을 활용하기에 앞서 여러 문제들이 발생한다. 그래서 이런 문제를 해결하고자 lock이라는 방식을 사용하며 이런 공유 자원들을 여러 thread에서 접근을 한다고 한다면 이를 충돌을 막기 위해 lock이 활용되는 부분을 critical section이라 한다. 동일한 리소스를 접근하는 critical section의 예시는 아래와 같다. 공유 변수 또는 데이터 구조 : 두 개의 스레드가 동시에 동일한 변수를 증가시키는 경우메모리 공유(Shared Memory)파일 시스템: 여러 프로세스가 동시에 동일한 파일에 쓰기를 하는 경우2. Lockslock은 데이터에 대한 mutual e..

1. Problem 이전에서 설명을 했지만 VA에서 PA로 주소를 변환하는 과정이 굉장히 많은 비용이 발생한다. 그래서 이런 방식은 시간이 많이 걸리고 또한 linear 한 단순한 방식이 아닌 multi-level page table 방식 같은 경우에는 더 많은 시간이 소요된다.2. TLB (Translation Lookaside Buffer)문제에서 이야기를 했듯이 translation 시간을 빠르게 하기 위해서 MMU안에 TLB라는 cache 하드웨어가 존재한다. 위에 나온 사진을 보면 먼저 offset이 4비트로 표현된 16 bytes의 크기의 page로 구성이 되어진다고 할 때 페이지의 주소를 PA로 변환하면 page table에 의하여 변환이 될 것이다. 하지만 여기서 VPN은 같고 offset..

1. Linear Page Table주소체계가 32-bit라고 한다면 page의 크기가 4KB이고 page-table entry는 4-byte라고 한다면 최종적으로 2^20 개의 엔트리가 존재한다면 2^20*4Byte = 4MB의 페이지 테이블이 프로세스마다 필요로 하게 된다. 그럼 linear 방식은 1024개의 process가 존재한다면 총 1024 processes * 4MB 이렇게 생각보다 많은 메모리를 필요로 하게 된다.하지만 이런 방식에서는 문제는 페이지 테이블의 낭비가 심하다는 문제가 있다. 2.Paging and Segments(Hybrid Approach)이전에 이야기를 했듯이 segmentation 방식에서는 다양한 길이의 segment로 주소를 나눈다. 하지만 paging방식은 정해진..

1. Relocation프로세스가 물리적 메모리에 저장이 되기 위해서는 0에서 바로 시작하는 것이 아니라 메모리의 어딘가에 저장을 해야 한다. 이런 가상의 주소에서 물리적 메모리의 주소로 변환하는 과정을 relocation이라고 한다. Static Relocation소프트웨어를 기반으로 메모리에 할당을 하는 방식이다. 여기서는 메모리에 로딩할때 OS가 각각의 프로그램에 할당한다. 즉 모든 프로세스에 대한 주소를 다시 작성을 하는 것이라고 할 수 있다. 그래서 이런 방식은 하드웨어에 대한 도움이 필요하지 않지만 메모리에 직접적으로 접근하기 때문에 보안에 취약하다. 또한 메모리를 한번 할당하면 주소를 이동하는 게 힘들다. Dynamic Relocation이 방식은 하드웨어를 기반으로 작동하는 방식이다. CP..

1. Recap운영체제에서 메모리에 저장되어 있는 process를 접근을 해야 하는데 이것은 보안에 문제가 생긴다. 그래서 이런 문제를 해결하고자 메모리의 직접적인 주소를 참조하는 게 아니라 가상의 주소를 참조하게 하는 것을 이것의 해결 방법으로 사용하고 있다. 이는 3가지 측면에서 효율성을 보인다. Protection각각의 서로 다른 프로세스가 서로를 보호 하기 위해서 VM이 작동해야 하며 이는 각각의 프로세스가 독립성을 가지게 해 준다.Transparency메모리의 실질적인 주소를 알 필요가 없기 때문에 프로그래밍의 편의성을 만들어 준다.Efficiency다양한 사이즈에 대한 메모리 분할을 최소화하는 게 가능하다. 2. Virtual Memory프로세스의 주소는 가상의 메모리 주소를 가지고 있으며 이..