sontothepring의 등록된 링크

 sontothepring로 등록된 네이버 블로그 포스트 수는 11건입니다.

[정보처리기능사 실기] 00. - 출제 범위와 소개 [내부링크]

2020년도부터 정보처리기능사 시험이 개편 되면서 조금 더 내용이 개편 되고 어려워졌다라는 평가가 많다. 개편 전에는 초등학생도 합격을 하고, 매 시험마다 합격률 50% 이상을 육박해 모든 사람들이 한번씩 건드려보는 수준의 기능사 시험이었다면, 개편 후에는 조금 더 전문적인 지식을 요하는 시험이 되었다고 볼 수 있을 것 같다. 당장 합격률만 보더라도 2020년 제 1회 기능사 실기 시험의 합격률이 15.2%로, 매우 낮아졌음을 보이고 있다. 2019년 개편 전과 비교하여 시험 방식 또한 조금 달라졌다. 바뀐 시험 시간은 1시간 30분(90분)으로, 개편 전(2시간)과 비교하여 30분이 줄어들었다. 다만 시험 방식 자체는 서답형 주관식으로, 동일하다. 또한, 이제는 상시 검정이 아니라 정기 검정 과목이므로, 이 자격증을 따기 위해서는 미리미리 접수를 해놓는 것이 좋을 것 같다. 출제 범위 또한 많이 변경 된 것 같다. 기존에는 알고리즘의 배점이 매우 높아, 알고리즘을 집중적으로 공부하

[SP] #00. 시스템 프로그래밍을 배워 보자. [내부링크]

복습 삼아 다시 시작해보는 시프 공부다. 내년이면 다시 복학을 해야 하기도 하고, 학교를 다니면서 복습을 하기에는 향후 일정이 어떻게 될지 모르기 때문에, 할 수 있을 때 조금이라도 준비해 두는게 좋다고 생각했다. 사실, 복습이긴 하지만 기억 나는게 거의 없다. Re : 제로부터 시작하는 컴퓨터 공학 생활이다. 형편 없이 1년을 쳐 논 댓가다. 그래서 지금이라도 해야 한다. 강좌는 Carnegie Mellon University(CMU)의 CS213 과목인 Computer System의 slide를 토대로 공부할 예정이다. 실제로 학기중에도 저 수업자료를 토대로 교수님이 강의를 진행했기도 하고, 저 자료만큼 system programing에 대해서 잘 정리한 자료도 잘 없다.(교수님 피셜이라 반박 안받음) 교재는 Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition. 을 사용한다. CMU의

[SP] #01. 비트, 바이트, 정수 표현형 [내부링크]

Data Representation(데이터 표현법) 비트란 컴퓨터에서 사용되는 전기 신호 단위로, 컴퓨터가 처리 할 수 있는 최소 단위이다. 비트가 8개 묶여 있으면 1 바이트가 된다. 즉 1 Byte = 8 Bits. 이는 컴퓨터가 8개의 비트를 묶어서 한번에 처리하기 때문에 저런 단위가 만들어 진 것이다. Type 별 Data Representation. 우리는 C, Python 등을 통해 다양한 변수 type을 만나 보았다. 위 표는 각 Data type이 몇 비트로 구성되어 있는지 나타내었다. 대표적으로 char은 1bit, int는 4bit, double은 8bit를 사용한다. 효과적으로 메모리를 관리하고 프로그램을 구성하기 위해서는 이러한 데이터 타입의 data representation을 알아 두는 것이 중요하다. Boolean Algebra(부울 대수) True는 1로, False 는 0으로 표현한다. And : &(Intersection) 기호로 표현. A와 B가 모

[OS_PINTOS] #00. 핀토스 환경 설정 [내부링크]

드디어 이제 다음 학기에는 그 악명 높은 OS를 직접 들어야 한다. 실로 자연재해 같은 과목이 아닐 수 없다. 글쓴이가 핀토스 환경 설정을 위해서 다양한 핀토스 블로그를 뒤져보면서 느낀 점은, 이 과목을 만약에 미리 공부하지 않고 들어버리면 큰일이 날 것 같다는 생각이었다. 몇몇 블로그들은 핀토스 과제 4개 중에 한두개만 해놓고 종적을 감추고 말았다. 핀토스 라는 트럭에 치여버려 흔적이 사라지고 만 것이다. 당장 트럭이 달려오는데 블로그에 글 쓸 시간이 어딨는가. 굉장히 슬픈 일이다. 오늘도 불이 꺼지지 않는 컴퓨터의 전원과 과제를 하고 있을 모든 대학생에게 애도를 표하는 바이다. 따라서 글쓴이는 개백수 상태인 지금 최대한 어느정도라도 공부를 해서, 트럭에 치이기 전에 최대한 멀리 도망가려고 한다. 이 카테고리에서 다룰 내용은 운영체제라는 과목에서 거의 필수로 다루는 과제인 PINTOS에 대한 내용이다. PINTOS는 x86 아키텍쳐를 위한 교육용 운영체제로써, 2004년에 스탠포드

[OS_PINTOS] #1-1. Alarm Clock [내부링크]

이 포스트부터는 PINTOS의 첫번째 과제인 Threads를 본격적으로 구현하여 보도록 하겠다. 일단 PINTOS라는 훌~륭한 친구를 만들어내신 stanford 대학의 공식 문서를 통해서 무엇을 구현해야 하는지 알아보도록 하자. https://web.stanford.edu/class/cs140/projects/pintos/pintos_2.html#SEC15 Pintos Projects: Project 1--Threads In this assignment, we give you a minimally functional thread system. Your job is to extend the functionality of this system to gain a better understanding of synchronization problems. You will be working primarily in the threads directory for this assignment, wi

[OS_PINTOS] #1-2. Priority Scheduling [내부링크]

오늘 포스트에서 구현해 볼 것은 Priority Scheduling 이다. 현재 PINTOS의 Scheduling은 라운드 로빈 방식으로 구현되어 있다. 이를 우선순위 방식으로 고려해서 스케줄링 되게 수정하는 것이 목표이다. 쉽게 말해, ready_list에 새로 추가된 thread의 Priority가 현재 CPU를 점유 중인 thread의 priority 보다 높으면, 기존 CPU를 끌어 내리고 자신이 CPU를 점유하게 구현하라는 것이다. thread의 priority를 체크해 주어야 할 순간은 크게 두 부분으로 나뉜다. 첫 번쨰는 ready_list에 thread가 들어가서 현재 CPU에 있는 thread의 priority와 비교를 해주는 경우. 두번째는 현재 CPU를 점유하고 있는 thread의 priority가 변해서 ready_list에 있는 priority와 비교를 해주어야 하는 경우이다. 우선 첫 번째 경우부터 체크를 해보자. ready_list로 thread를 들어가게

[OS_PINTOS] #1-3. Semaphore, Lock, condition [내부링크]

이번에는 synchronization primitives. 동기화 도구들의 Priority scheduling에 대해서 알아보도록 하자. 핀토스에 존재하는 synchronization 도구들의 종류에는 Lock, Semaphore, Condition Variables 총 3가지가 존재한다. struct lock { struct thread *holder; /* Thread holding lock (for debugging). */ struct semaphore semaphore; /* Binary semaphore controlling access. */ }; 먼저 Lock이란 세마포어와 *holder, 즉 lock을 들고 있는 thread의 정보를 저장하는 변수를 가지고 있는 구조체를 뜻한다. struct semaphore { unsigned value; /* Current value. */ struct list waiters; /* List of waiting threads. *

[프로그래머스] 정렬-K번째 수 (Lv.1) [내부링크]

이번에 풀어볼 문제는 프로그래머스의 정렬 카테고리 중 가장 기초적인 문제이다. 그를 증명하듯, 자체 난이도를 레벨 1로 매겨놨다. 하지만, 레벨 1이라고 해서 만만히 보면은 안된다. 우선, 문제부터 분석해보자. 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1

[프로그래머스] 정렬-가장 큰 수 (Lv.2) [내부링크]

이번에는 프로그래머스 코딩 테스트 연습의 정렬 카테고리의 두번째 문제인 가장 큰 수를 풀어보도록 하자. 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 입출력 예 numbers return [6, 10, 2] "6210" [3, 30, 34, 5, 9] "9534330" 이 문제의

[OS_PINTOS] #1-4. Priority Inversion [내부링크]

Priority Inversion이란 priority가 높은 thread가 priority가 낮은 thread를 기다리는 상황을 말한다. 즉, priority 관계가 역전 되었다는 뜻이다. Priority Inversion을 나타낸 그래프. (출처 : KAIST OS Lab) 이는 Thread H가 lock을 request 했다가 다시 Thread L이 lock을 돌려받는 과정에서 우선 순위가 더 높은 Thread M이 있음으로써 lock을 가로챘기 때문에 발생하는 현상이다. 이러한 현상이 발생하게 되면 lock을 요청한 thread H의 priority 가 더 높음에도 불구하고 Thread M이 먼저 실행되는 결과가 나온다. 이를 해결해 주기 위한 방법으로 제시 된 것이 바로 Priority Donation이다. Priority Donation을 나타낸 그래프. (출처 : KAIST OS Lab) Thread H가 lock을 요청하면서, 자신의 priority를 Thread L에게

[OS_PINTOS] #1-5. Advanced Scheduler [내부링크]

이제 Project 1의 마지막 과제까지 왔다. 마지막 과제는 Advanced Scheduler 를 구현하는 것이다. Advanced Scheduler 가 뭐에요 ?? => 4.4BSD 스케줄러 MLFQS를 queue를 사용하지 않고 구현하는 것. => priority 에 기반을 둔 스케줄러. MLFQS가 뭐에요 ??? => Multi-Level Feedback Queue Scheduler 의 줄임말로, 실시간 피드백을 통해 priority를 조절한다. Advanced Scheduler가 어떻게 priority를 조절하는지는 아래의 링크에서 자세하게 확인 할 수 있다. https://web.stanford.edu/class/cs140/projects/pintos/pintos_7.html#SEC131 Pintos Projects: 4.4BSD Scheduler [ << ] [ >> ] [ Top ] [ Contents ] [Index] [ ? ] B. 4.4 BSD Scheduler