전체 글 44

Thread & Process

Alarm Clock최초에 Busy Waiting으로 구현. 이는 특정 조건이 충족될 때까지, 프로세스나 스레드는 루프를 돌며 해당 조건을 지속적으로 확인합니다. 이 과정에서 CPU는 계속해서 이 루프를 실행하게 되어, 해당 프로세스나 스레드가 CPU를 점유한 상태가 됩니다. 때문에 이러한 방식은 CPU 자원을 낭비하게 되고, 이를 Sleep Awake 방식으로 수정하게 됨.Thread Scheduler핀토스의 스케줄러는 Round Robin으로 구현되어 있습니다. 이는 중요도에 상관없이 모든 스레드를 번갈아가며 수행합니다. 이를 Priority Scheduler로 수정하고 Donation 기능을 넣는다던가 하는 방식으로 수정하게 됩니다. 저는 Extra 과제인 Multi Level Feedback Qu..

WIL/스터디 2024.08.25

Malloc Lab

Mallocmalloc은 지정된 크기만큼의 메모리를 할당하고 할당된 메모리의 시작주소를 반환한다.이 때, 할당된 메모리는 초기화되지 않기 때문에 그 위치에 저장된 값들이 남아 있을 수 있다. Calloccalloc은 malloc과 같이 메모리를 할당해주지만, 할당된 메모리의 값을 모두 0으로 초기화한다. Implicit Malloc (암시적)프로그래머가 직접 메모리 할당을 지시하지 않아도 컴파일러 혹은 런타임이 자동으로 메모리를 할당하는 경우. 보통 가비지 컬렉션이 있는 언어인 Java나 Python에서 객체를 생성할 때 명시적으로 메모리 할당을 하지 않아도 된다. 내부 단편화가 발생할 수 있고 속도가 상대적으로 느리다. Explicit Malloc (명시적)프로그래머가 직접 메모리 할당을 지시하고, 할..

WIL/스터디 2024.08.25

Virtual Memory

가상메모리란 무엇인가?물리 메모리(RAM)에 한계가 있기 때문에 이를 보완하기 위해 만든 것이 가상 메모리입니다. HDD나 SSD의 자원을 끌어다써서 메모리 공간을 추상화시켜 OS가 자신의 메모리가 마치 무한한 것처럼 사용할 수 있게 해줍니다. 1. 페이지페이지는 가상 메모리에서의 기본 단위입니다. 운영 체제는 각 프로세스에 가상 메모리 공간을 제공하며, 이 가상 메모리 공간은 일정한 크기의 페이지로 나뉩니다. 페이지는 프로세스가 사용하는 메모리 블록을 의미하며, 가상 주소 공간에서 특정 범위의 주소를 나타냅니다.2. 프레임프레임은 물리 메모리(RAM)에서의 기본 단위입니다. 물리 메모리는 프레임이라는 고정된 크기의 블록으로 나누어져 있으며, 각 프레임은 가상 메모리의 페이지와 매핑됩니다.3. 페이지 테..

WIL/스터디 2024.08.23

Pintos Extra Questions

1. %rip, %rsp 레지스터의 의미와 CPU 동작에서의 역할%rip (Instruction Pointer Register): %rip는 현재 실행 중인 명령어의 메모리 주소를 가리키는 레지스터입니다. 프로세서가 명령어를 실행할 때마다 %rip는 다음에 실행할 명령어의 주소로 업데이트됩니다. 명령어 실행이 완료되면 %rip는 자동으로 다음 명령어의 주소로 증가하거나, 점프(분기) 명령에 따라 특정 주소로 설정됩니다.%rsp (Stack Pointer Register): %rsp는 현재 스택의 최상단을 가리키는 레지스터입니다. 함수 호출 시, 함수의 리턴 주소나 지역 변수를 저장하기 위해 스택을 사용하게 되며, 이때 %rsp는 스택의 최상단을 관리합니다. PUSH 및 POP 명령어는 %rsp를 조작하여..

WIL/스터디 2024.08.22

Red-Black Tree Extra Questions

1. Segmentation Fault (Core dumped)"Segmentation Fault (Core dumped)"라는 에러 메시지는 프로그램이 허용되지 않은 메모리 영역에 접근하려고 할 때 발생합니다. 이 메시지는 다음과 같은 문제들로 인해 발생할 수 있습니다:잘못된 포인터 참조 (예: NULL 포인터 참조, 초기화되지 않은 포인터 사용)배열 범위를 초과한 접근이미 해제된 메모리 접근스택 오버플로우core dumped는 프로세스가 비정상 종료되었을 때, 시스템이 해당 시점의 메모리 상태를 파일로 저장했다는 의미입니다. 이 파일을 사용해 프로그램이 종료된 시점의 상태를 분석할 수 있습니다.2. Core dumped ?core 파일은 프로세스가 비정상 종료될 때 메모리의 상태를 덤프한 파일입니다...

WIL/스터디 2024.08.21

[Week15] 나만의 무기를 갖기 - 5

최종발표까지 준비를 많이 했고, 서버 상태도 완벽하게 해놨는 데, 어이없게 발표 때 문제가 터지고 말았다. STT서비스인 리턴제로 쪽에 보내는 API가 한번에 뭉치는 문제가 생겨 429 에러코드가 계속 들어와서 STT가 되지 않았다. 한번도 이런 적이 없었는데... 무튼, 이 때문에 발표 중간에 NLP 서버를 재부팅했고, 다시 동작하는 것을 확인했다. 그러나 이 진행 상태를 알 리 없는 태리는 오류가 터지자마자 혹시 몰라서 준비해놨던 비상용 시연 영상을 빠르게 틀어버렸고, 우리는 시연을 하는 데에 실패했다. 발표가 끝나고 질문 시간에 아무도 질문을 하지 않아 조금 불안했다. 아무래도 지피티를 사용해서 남이 볼 때 아 그냥 쉽게 쉽게 갔구나로 보일 수도 있다고 생각했다. 그러다가 어떤 분이 오셔서 이것 저..

[Week15] 나만의 무기를 갖기 - 4

중간 발표를 마쳤는 데, 운영진 측에서 키워드 맵으로 문맥 파악이 전혀 안되는 데 문맥 파악이 되었다고 억지를 부리는 느낌이다. 수정하라는 피드백이 들어왔다. 이 때문에 다시 회의를 했는 데, 결국 문맥 파악이라는 것에 초첨을 두게 되면 키워드 맵으로는 당연히 단어끼리의 연결이기 때문에 될 수가 없었고, 다시 처음으로 돌아가 마인드 맵으로 수정해야 한다는 결론이 나왔다. 차라리 처음에 마인드맵으로 하지말고 키워드맵으로 하라는 피드백이 없었으면 더 나았을까? 라는 생각도 문득 스쳐지나갔다. 그러나 우리의 아키텍쳐는 이미 키워드 맵에 맞게 끔 수평 관계로 구성되어 있었다. 각 노드는 서로의 존재를 모르고 이 노드들을 연결하는 Edge라는 구조체가 있는 상태였다. 이를 마인드맵으로 수정하려면 일단 상하 관계가..

[Week15] 나만의 무기를 갖기 - 3

키워드 추출하는 타이밍을 정하는 데에 ELMo를 사용하려고 시도했다. ELMo는 사전학습된 모델로 단어의 임베딩 섹터를 생성하여 문맥이 바뀌었을 때를 알 수 있는 모델이었다. 나는 이를 사용하여 문맥이 바뀔 때를 체크해서 Keyword의 추출타이밍으로 적용하거나 키워드를 묶을 때 다른 메인 아이디어로 묶고자 하였다. 찾아보니 한국어 모델이 mini 모델이지만 있긴 있어서 이를 사용하게 되었다. 그러나 세팅을 마치고 직접 사용해보니 mini model이어서 그런가 성능이 너무 안좋았다. 이 때 사용한 예시 스크립트는script = '여행 어디로 갈까? 대구나 부산 어때? 그럼 부산으로 가자. 우리 여행가서 먹을 점심 메뉴 고르자. 국밥이나 밀면 어때?' 였는 데, ELMo 에서 반환된 데이터는switchi..

[Week15] 나만의 무기를 갖기 - 2

프로젝트를 개발하며 Keyword를 추출하는 것이 아무래도 Main Server에서 수행하면 부하가 너무 심할 것 같아서 차라리 언어에 친화적인 NLP Server를 따로 구성하기로 했다. 그리고 사용할 수 있을 만한 기술들을 찾아봤는 데, KRWordRank, Elmo, KoBERT 등의 라이브러리와 언어모델을 사용할 수 있을 것 같다. KRWordRank는 비지도학습으로 키워드를 추출해주는 라이브러리다. 그래서 이를 이용하여 문장에서 단어를 추출하는 데 성공했고, 조사나 부사까지는 필터링이 가능하다는 것을 깨달았다. 그러나 다른 문제가 생겼다. KRWordRank는 이 문맥에서의 가장 중요한 단어를 추출한다기 보다는 반복적으로 많이 나오는 단어에 대해서 중요도가 올라가서 가장 중요한 단어 순서로 뽑아..

[Week14] 나만의 무기를 갖기 - 1

나는 해내야한다 조의 서포터로 팀에 참가했다. 원래 내가 팀장을 하고자하는 생각이 있었으나, 이전에 0주차에 같이 팀을 했었던 태리와 마음이 맞아 둘 중에 한명이 팀장을 하기로 했다. 나는 이전 회사에서도 파트장까지 달았었고, 게임을 할 때도 길드장을 한다던가 공대장을 하는 등 리더 위치에서 무언가 했던 경험이 많았고 프로팀 생활도 했었기 때문에, 이번에는 태리에게 팀장을 양보하기로 했다. 아무래도 포폴쓸 때 나보다는 태리에게 더 많은 도움이 될 것이라고 생각했다. 처음에 우여곡절이 많았다. 내가 프로젝트를 시작하자마자 3일정도 몸살에 걸려서 거의 아무것도 못하고 잠만 잤는데, 정신이 들었을 때 마다 한두마디씩 툭툭 던진 아이디어 로 나머지 팀원들이 아이디어를 추리고 재밌게 바꿔서 제출했다. 이 때 나 ..