본문 바로가기

전체 글55

[OS] Mechanism: Address Translation CPU를 가상화할 때 LDE(Limited Direct Execution) 매커니즘을 활용했었던게 기억나시나요??CPU를 user mode와 kernel mode의 2가지 모드와, system call, trap, interrupt등이 발생했을 때는 운영체제가 개입하여 알맞은 일을 처리해주었었습니다. 이 때 운영체제는 하드웨어의 지원을 받아 효율적인 가상화를 제공함과 동시에, 프로세스에게 통제권을 온전히 주는 것이 아닌 time interrupt같은 것을 통해서 통제권을 유지했습니다. CPU 가상화에서 효율성(Efficiency)과 통제(Control) 그리고 보호(Protection)가 운영체제에게 중요했던 만큼 메모리 가상화에서도 여전합니다. 또한, 프로그램들이 자신의 address space를 원하.. 2024. 11. 14.
[OS] The Abstraction: Address Space 저번글로서 이제 CPU의 가상화가 끝났고, 이제부터는 '메모리의 가상화'에 대해서 다룰 차례다. 한번 그 역사 흐름부터 살펴보자. 옛날에는 컴퓨터가 매우 비쌋기 때문에, 사람들은 컴퓨터를 더 효과적으로 공유하길 원했습니다. 이렇게 해서 다중 프로그래밍의 시대가 열리게 되었고, 여러개의 프로세스가 실행되기 시작합니다. 그래서 CPU의 가상화, 시분할(time sharing)의 시대가 도래하게 되었습니다.  예전에는 시분할을 하면서 Context switching을 할 때, 모든 state들을 디스크에 저장한 후, 다른 프로세스의 상태를 불러와서 실행하는 식으로 공유를 했었는데, 이 방법은 너무 느리다는 단점이 있습니다. 메모리 전체 내용을 디스크에 저장하는 것은 딱 봐도 성능이 너무 떨어집니다..따라서 프.. 2024. 11. 14.
[Swift 기본기] Value type과 Reference type의 메모리 할당 정말 오랜만에 다시 글을 써봅니다. 취준을 하면서 자소서를 하도 쓰다보니 블로그글을 안써도 항상 글을 쓰고 있긴 했으니 감각이 무뎌졌었네요..ㅎㅎ 이제 곧 아마도 2주안으로는 자소서도 일단락될 것 같기도 하고 여유가 생기면 그 주라도 항상 블로그글을 쓰도록 노력해보겠습니다!! 오늘 주제는 돌고돌아 value type과 reference type에 대한 내용입니다. Value type과 reference type은 어째서 왜 간단한 듯하면서도 어렵고 이렇게 공부할게 많은 걸까요?? 🤔 공부를 하면서 Swift의 String와 Array는 가변적인 크기때문에 데이터가 힙에 저장된다고는 어느정도 알고 있었는데, 생각보다 reference type이 stack에, value type이 heap에 저장되는 예외 .. 2024. 4. 12.
[Swift 기본기] weak와 side table 내용이 수정될 수 있는 게시글입니다. 안녕하세요 정말 정말 오랜만에 돌아왔습니다. 오늘 오랜만에 들고 돌아온 주제는 side table입니다. 제가 전혀 몰랐다가 알게된거라 새로 알게된 겸 개념을 정리해보고자 합니다! 우선 제일 처음으로 제가 잘못? 알고 있었던 것 부터 바로잡고 가겠습니다. RefCount의 주석을 참고해보면 알 수 있듯이 Reference Count의 종류는 strong, unowned, weak 총 3가지로 각 각 존재합니다! 저는 reference count는 하나만 존재해서 이를 strong이면 +1 시켜주고, unowned나 weak면 그대로 두고 뭔가 이런식으로 하나를 가지고 조작하는 것이라고 생각했는데 그게 아니였습니다. Strong RC - 0이 되면 object가 dei.. 2024. 3. 15.