전체 글 82

[운영체제] 17. Free Space Management 빈 공간 관리

앞장에서 세그멘테이션에서 발생할 수 있는 문제를 제기하며 끝났다. 첫 번째 문제는 외부 단편화(external fragmentation)였다. 아무리 세그멘테이션으로 물리 메모리를 관리하더라도 빈 공간이 단편화되어 사실 상 사용하기 어렵게 된다는 문제가 발생한다. 두 번째 문제는 세그멘테이션이 아직 유연하지 못해서 sparse한 구조에서 비효율적이라는 것이다. 이번 장에서는 외부 단편화를 해결하기 위한 방법으로 free list에 대해 알아볼 것이다. 17장의 핵심 질문 : 빈 공간을 어떻게 관리하는가? • 가변 크기의 요구를 충족시켜야 할 때, 빈 공간은 어떻게 관리되어야 하는가? • 단편화를 최소화하기 위해 어떤 전략을 사용할 수 있는가? • 여러 대안들의 시간과 공간의 오버헤드는 어떻게 되는가? 1..

운영체제 2024.04.23

[운영체제] 07. 스케줄러

Korean translation of Operating Systems: Three Easy Pieces Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau(University of Wisconsin-Madison), translation by Youjip Won, Minkyu Park, Sungjin Lee 위 교재를 읽고 공부하며 작성한 글으로, 잘못된 내용이 있을 수 있습니다. 글에서 사용된 이미지의 출처는 위 교재입니다. 07장의 핵심 질문 : 스케줄링 정책은 어떻게 개발하는가? 📍 워크로드에 대한 5가지 가정 다음에 어떤 프로세스를 실행할 지는 스케줄링 정책(Scheduling policy)에 의해 결정된다. 먼저 프로세스에 대해 5가지의 가정을 하고,..

운영체제 2024.04.23

[운영체제] 18. Paging

18장의 핵심 질문 : 페이지를 사용하여 어떻게 메모리를 가상화할 수 있을까? 🔹 흐름 정리 우리는 메모리 공간 관리를 위해 세그멘테이션 기법을 도입하였다. 세그멘테이션에서는 세그멘트 단위(예, 코드, 힙, 스택)로 주소 공간을 나눴기 때문에 다양한 크기의 덩어리로 구분해주어야 했는데, 이로 인해 외부 단편화(external fragmentation)문제가 발생했다. 외부 단편화 문제는 공간이 할당되는 것을 점점 더 어렵게 했다. 그래서 나온 새로운 방식이 페이징(paging)이다. 우리는 이번 글에서 페이징 기법에 대해 알아볼 것이다. 🔹 페이징(paging)이란? 세그멘테이션에서 발생한 외부 단편화의 근본적인 원인은 공간을 다양한 크기의 덩어리로 분할한다는 것에 있다. 그래서 페이징은 공간을 동일한 ..

운영체제 2024.04.07

[Flutter] Set AppBar Transparent with SafeArea

앱바를 투명하게 만들고 body 위에 겹치게 하면, body안의 위젯들과 앱바가 겹치는 문제가 발생한다.(아래 시뮬레이터 캡쳐사진의 왼쪽 사진 참고) 이를 해결하기 위해 SafeArea를 body안의 위젯에 씌워주면, app bar의 그림자 효과가 다시 보이는 문제가 발생한다. (아래 시뮬레이터 캡쳐사진의 가운데 사진 참고) 구글링해보니 StackOverflow에 같은 질문도 있었다. https://stackoverflow.com/questions/68979682/how-to-set-flutter-appbar-transparent-without-the-status-bar How to set Flutter AppBar Transparent without the Status bar I tried to set..

Flutter 2024.04.04

[Flutter] table_calendar 패키지로 Calendar 구현하기

table_calendar 패키지를 사용해서 Calendar를 구현하기 위해, 개발자의 깃헙 베이직 코드를 뜯어보자. ✔ Table Calendar 패키지 설치 table_calendar는 터미널에 아래 명령어를 입력하여 사용할 수 있다. 패키지가 잘 설치되면 pubspec.yaml 파일에 dependencies가 추가될 것이다. flutter pub add table_calendar ✔ Table Calendar 예제 코드 개발자의 Github에서 baisic_example.dart 파일이 있는 링크는 아래와 같다. table_calendar/example/lib/pages/basics_example.dart at master · aleksanderwozniak/table_calendar Highly ..

Flutter 2024.04.02

[운영체제] 06. 제한적 직접 실행(LDE, Limited Direct Execution)

이번 장의 핵심질문은 제어를 유지하면서 효과적으로 CPU를 가상화하는 방법이다. 프로세스가 제어권을 가지지 못하도록 해야하는 것이 매우 중요한데, 그러기 위해서는 하드웨어와 운영체제의 지원이 필수적이다. 초기에는 직접 실행(Direct Execution) 방식이었다. 이는 프로그램을 CPU 상에서 그냥 직접 실행시키는 것이다. 프로세스가 CPU를 제때 잘 반납하면 좋겠지만 현실은 그렇지 않다. 악의적인 프로그램이 컴퓨터를 장악할 수도 있고, CPU를 가상화하는 데 필요한 시분할(time sharing)기법을 구현할 수도 없다. '제한적 직접 실행'으로 이 문제들을 해결할 수 있다. 직접 실행의 문제점과 해결방안에 대해서 차근차근 살펴보자. 📍 직접 실행 프로토콜의 문제점 1 : 제한된 연산 ➪ 커널모드와..

운영체제 2024.03.31

[자연어처리, CS224N] #6 - LSTM

🔹 시작하며, 흐름 정리 Lecture 5에서는 RNN-LM에 대해 배웠다! RNN은 input 길이에 제한이 없었고, 매 step마다 같은 Weight를 적용했다. 각 step에서 ouput을 만드는 건 선택이었다. RNN을 이용하니 기존 LM의 문제들을 많이 극복했지만, Vanishing gradient problem이라는 심각한 문제가 있었다. 그래서 등장한 것이 이번 글에서 알아볼 LSTM이다. LSTM은 RNN에서 메모리를 분리해보면 어떨까?라는 질문으로부터 등장했다. RNN이 가지고 있는 메모리는 장기기억을 할 수 없기 때문이다. 🔹 LSTM이란? LSTM이란 장단기 메모리(Long Short-Term Memory RNNs)이다. time step마다 hidden state $h^{(t)}$ ..

자연어처리 2024.03.29

[자연어처리 CS224N] #5-2 Neural Language Model, Perplexity

🔷 시작하며, 흐름 정리 지난 포스팅에서 우리는 n-gram Language Model에 대해서 알아보았다. 이번 글에서 알아볼 것은 n-gram Language Model이 가지고 있는 치명적인 단점을 극복시켜줄 Neural Language Model이다. n-gram Language Model의 문제점부터 복습해보자. n-gram Language Model은 앞의 n-1개의 단어만을 보고 n번째 단어를 예측한다. 예를 들어 "students opened their"이 1000번 나왔고, "students opened their exams"가 100번 나왔다면, "students opened their" 다음에 "exams"가 나올 확률은 0.1(100/1000)이다. 따라서 n이 커질 수록 그 특정 ..

자연어처리 2024.03.26

[자연어처리 CS224N] #5-1. n-gram Language Model

오늘도 어김없이 자처 하수하따 🔹 Language Model 오늘은 Language Modeling에 대해 배웠다. Language Modeling은 단어가 주어졌을 때, 다음에 어떤 단어가 올 지를 예측하는 모델이다. 더 구체적으로 말하자면 일련의 단어들이 주어졌을 때(x1, x2, x3, ... ,xt), 다음 단어 x(t+1)이 무엇일지에 대한 조건부 확률을 계산하는 것이다. 이러한 시스템을 Language Model 이라고 부른다. 우리는 Language Model을 매일 사용한다. 스마트폰이나 검색창의 자동완성기능, GPT 등 모두 Language Model이다. 🔹 n-gram Language Model ▪️ n-gram Language Model 이란 Language Model은 어떻게 학습..

자연어처리 2024.03.24

[자연어처리 CS224N] #2-3. GloVe

GloVe는 Global Vectors for Word Representation의 약자로 카운트 기반(Count-based)과 예측 기반(Prediction-based)를 모두 사용하는 방법론이다. 통계정보를 포함한 Direct prediction embedding 방식이다. 어떻게 카운트 기반과 예측 기반 모두를 사용해서 두 개의 장점들을 취했을까? 손실함수를 보면서 이해해보자. (이 부분은 위키독스의 을 참고하여 작성했습니다.) 먼저 용어를 정리해보자면, X는 동시 등장 행렬(Co-occurrence Matrix)이다. Xij는 중심 단어 i가 등장했을 때 윈도우 내 주변 단어 j가 등장하는 횟수이다. P( i | j )는 중심 단어 j가 등장했을 때 윈도우 내 주변 단어 i가 등장할 확률이다. 예..

자연어처리 2024.03.24