쾌락없는 책임 (공부)
-
시스템프로그래밍 02 - 어셈블리어 들어가기쾌락없는 책임 (공부)/시스템프로그래밍 2021. 4. 18. 20:08
본 포스트는 강동완 교수님의 '시스템프로그래밍' 강의를 듣고 이해한 것들을 정리한 포스트입니다. - 강의자료는 올리지 않습니다 컴퓨터에서 입출력은 4단계(교수님은 3단계라 하셨는데 0~3이라 3단계인것 같습니다)를 가지고 있으며 각 레벨은 아래와 같습니다. 고수준 언어의 레벨 C, C++ 또는 그 이상 수준의 언어로 작성된 함수로 입출력을 제어하는 것. OS나 시스템에 의존적이지 않고 범용성이 아주 뛰어납니다. 대신 그만큼 하드웨어 제어권이 떨어지게 됩니다. 운영체제 레벨 운영체제의 라이브러리를 이용하는 것으로 키보드 문자열 입력 등등의 작업이 해당됩니다. BIOS 레벨 운영체제는 BIOS와 소통을 하는데 BIOS 레벨에서 작성된 입출력 제어는 하드웨어에 직접 접근이 가능합니다. 대신 같은 BIOS에서만..
-
시스템 프로그래밍 01 - 사실상 어셈블리어 공부쾌락없는 책임 (공부)/시스템프로그래밍 2021. 4. 18. 17:33
본 포스트는 강동완 교수님의 '시스템프로그래밍' 강의를 듣고 이해한 것들을 정리한 포스트입니다. - 강의자료는 올리지 않습니다 32비트의 경우 8개의 범용 레지스터(32bit), 6개의 세그먼트 레지스터(16bit), Flag 레지스터, EIP를 가지고 있습니다. 범용 레지스터 8개의 범용 레지스터는 32비트 x86 프로세서에서는 32bit의 용량을 가지고 있으며 이 안에 들어가 있는 데이터들은 각종 산술 연산에서 '피연산자'가 되어줍니다. 이전 16비트에서는 이런 역할을 하는 레지스터들이 16bit의 용량을 가지고 있었으며 이의 영향으로 16비트 버전 프로그램들의 하위호환을 위해서 32비트의 레지스터들은 16비트, 8비트로 나뉠 수 있습니다. 이런 식으로 레지스터를 나누어서 이전 버전의 프로그램들도 작..
-
운영체제 03쾌락없는 책임 (공부)/운영체제 2021. 4. 10. 16:58
본 포스트는 '신용현'교수님의 운영체제 강의를 듣고 이해, 정리한 내용들을 올린 포스트입니다. - 강의자료는 올리지 않습니다. 프로세스들이 서로 협력을 한다는건 파일을 공유하는것이 위주입니다. 이걸 공유함으로서 속도가 빨라지고 분업을 할 수 있어 전체적인 성능 향상을 끌어올릴 수 있습니다. 예를 들어 A, B프로세스가 있는데 정보 공유를 하지 않는다면 A가 B에게 정보를 보낼 때 커널을 통해서 보내야 합니다. 하지만 메모리의 일부분을 공유한다면 A는 공유된 부분에 변경사항을 전달, B는 그 변경사항을 가져오는 식으로 간편화 할 수 있습니다. - Producer/Consumer 문제 : 한 프로세스는 정보를 생산하고 한쪽은 소비하는데 이를 어떻게 할것인가? * Producer도 다른 곳에서 Consumer..
-
운영체제 02쾌락없는 책임 (공부)/운영체제 2021. 4. 10. 11:19
본 포스트는 '신용현'교수님의 운영체제 강의를 듣고 이해, 정리한 내용들을 올린 포스트입니다. - 강의자료는 올리지 않습니다. 1. 프로세스란 - 운영체제는 동시에 여러 프로그램을 돌리고 있습니다. 이걸 job, process라고 부릅니다. 한마디로 프로세스는 실행중인 프로그램이라고 할 수 있습니다. 2. 프로세스의 주소 공간이 포함하는 것들 - 프로그램의 코드 (text 구역이라고도 불립니다, 프로그램을 해석하면 결국 2진수가 되니깐) - 데이터 구역 (전역변수, 프로세스가 종료되지 않는 이상 남아있는 변수들) - 스택 (로컬 변수, 함수 인자, 리턴 값 등이 저장되는 곳) - 힙 (수행중 동적으로 할당됩니다. 줄어들기도 하고 커지기도 합니다) - 다음 해야할 일의 주소를 가리키는 프로그램 카운터 3...
-
프로그래머스 Level 2 - 가장 큰 수 C++쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 4. 10. 10:44
코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr #include #include #include using namespace std; bool compare(string a, string b){ return a+b > b+a; } string solution(vector numbers) { string answer = ""; vector v; for(int i = 0; i < numbers.size(); i++) v.push_back(to_str..
-
운영체제 01쾌락없는 책임 (공부)/운영체제 2021. 4. 9. 10:23
본 포스트는 '신용현'교수님의 운영체제 강의를 듣고 이해, 정리한 내용들을 올린 포스트입니다. - 강의자료는 올리지 않습니다. 현재 컴퓨터는 프로그램을 돌릴때 저장장치, 메모리, CPU, 레지스터가 서로 데이터를 주고 받으면서 작동하고 있습니다. 여기서 캐싱이란 엑세스 속도를 위해서 데이터를 속도가 빠른 저장장치로 이동시키는 것으로 여러 레벨(여러 저장장치)에서 이루어지게 됩니다. 빠른 저장장치는 CPU에 있으니 CPU가 일을 잘 하기 위해서 필요한 작업이라고 볼 수 있습니다. ( 같은 데이터를 여러번 읽을 확률이 높으니 앞으로 있을 요청도 빠르게 처리할 수 있습니다 ) 캐싱을 하면 일단 자신의 로컬에 데이터가 있는지 확인합니다. 있다면 바로 사용하면 되는 것이고 없으면 가져와서 로컬 캐시에 카피를 하게..
-
프로그래머스 Level2 - 구명보트 C++쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 4. 8. 20:37
코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr #include #include #include using namespace std; int solution(vector people, int limit) { int answer = 0, count = 0; sort(people.begin(), people.end()); // people.size() > count // count가 가벼운 사람들 중 탄 사람 수인데 size==count가 된다면 // 사람들이 이미 다 탔다는 이야기가 ..
-
프로그래머스 Level 1 - 체육복 C++쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 4. 7. 11:34
코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr #include #include using namespace std; int solution(int n, vector lost, vector reserve) { int answer = 0; int arr[31]; for(int i = 0; i < n; i++) arr[i] = 1; for(int i = 0; i < lost.size(); i++) arr[lost[i]-1]--; for(int i = 0; i < reserve.size(); i++) arr[rese..