분류 전체보기
-
[OS] 4-2. Process ManagementComputer Science/운영체제 2020. 9. 24. 02:30
#프로세스의 생성, 실행 및 종료에 관한 시스템 콜 1. fork() 시스템콜 위 그림의 두 코드는 부모 프로세스(좌), 자녀 프로세스(우)이다. 처음 부모 프로세스가 코드를 수행하다가 fork 시스템 콜을 만나면, 부모 프로세스를 똑같이 복사해 자녀 프로세스를 만들고 이후 명령을 계속 실행한다. 자녀 프로세스는 부모 프로세스의 Program Counter를 그대로 복제했기 때문에, 부모 프로세스와 마찬가지로 fork의 바로 밑 코드부터 실행한다. 또한, 부모 프로세스는 fork의 return 값으로 양수, 자녀 프로세스는 0을 pid에 취해 서로를 구분한다. 2. exec() 시스템콜 fork로 복사한 프로세스를 다른 프로그램으로 다시 덮어쓰기 위해 exec 시스템콜을 사용한다. 위와 같은 경우는 ex..
-
[OS] 4-1. Process ManagementComputer Science/운영체제 2020. 9. 23. 15:36
# 프로세스의 생성 부모 프로세스가 자식 프로세스를 Copy-on-write(COW) 기법으로 생성한다. COW는 무언가의 변경(write)이 있을 때, 부모의 주소 공간 중 변화가 있는 부분을 copy해 자식의 주소 공간을 만드는 기법이다. 또한, 자식이 자식을 생성하고 그 수가 많아지면 프로세스는 트리를 형성한다. - 자식은 부모 프로세스의 ① 주소 공간(binary & OS data)을 복사해 ② 그 공간에 새로운 프로그램을 올린다. ex) 유닉스에서는 fork() 시스템 콜이 주소 공간을 복사하고 exec() 시스템 콜이 새로운 프로그램을 메모리에 올린다. - 생성된 프로세스는 자원을 운영체제로부터 받거나 부모 프로세스와 공유한다. (부모와 공유하지 않는 것이 일반적) - 수행 : 부모와 자식이 ..
-
[OS] 3-2. ProcessComputer Science/운영체제 2020. 9. 21. 04:53
# Thread (= lightweight process) (↔ heavyweight process, 전통적인 개념의 프로세스) 하나의 프로세스 내부에 CPU 수행 단위를 여러 개 두는 것을 말한다. 각각의 스레드는 CPU 수행과 관련된 정보만 제외하고 프로세스의 모든 것을 공유한다. 동일한 일을 수행하는 프로세스를 여러 개 띄워 놓고 싶다면, 하나의 주소 공간에 여러 개의 스레드를 사용하는 것이 효율적이다. 따라서, Program Counter를 여러 개 두고 register의 값들을 별도로 기억해두어 각각의 스레드가 스스로에게 필요한 code를 실행하게끔 한다. 함수 호출 및 return과 관련해서 stack도 스레드마다 따로 둔다. 1. Thread의 구성 · program counter · reg..
-
[Git] Git 명령어Git 2020. 9. 18. 20:01
# git status git에 의해 관리되는 파일들의 상태를 체크할 수 있게 한다. git status # git add 파일을 Staging Area에 올린다. git add [파일 이름] git add . # 변경 내역을 모두 한 번에 Staging Area로 올리기 # git reset 1. add되어 Staging Area에 올라와 있는 파일을 Staging Area에서 다시 내린다. git reset [파일 이름] 2. 이전 commit 내역 중 한 곳을 선택해 그 때의 상태로 돌아간다. git reset --hard [git log에서 볼 수 있는 해당 commit의 해시 값] # hard 옵션은 선택 commit 이후에 남긴 commit 기록을 완전히 없앤다. (soft는 기록을 살리고 이..
-
[Computer Architecture] 2. 데이터의 표현Computer Science/컴퓨터구조 2020. 9. 18. 18:49
※ 1 nibble = 4 bit ※ 8진수는 2진수에서 3자리씩, 16진수는 2진수에서 4자리씩 묶어 변환하여 표현한다. ※ 실수의 소수 부분은 이진수 변환 시 곱하며 해당 값을 계산한다. # 보수(complement)는 뺄셈과 음수를 실현한다. - one's complement(1진 보수=1의 보수) : 최댓값(해당 bit에서 가장 큰 표현형) 형성에 서로 보완 관계에 있는 두 수의 관계 ex) A + B = 9, A + B = 99 - two's complement(2진 보수=2의 보수) : Modulus(최대 표현 자리 수) 형성에 서로 보완 관계에 있는 두 수의 관계 ex) A + B = 100 (해석 : 두 자리 수를 표현하기 위한 모든 가지 수, 99(99가지)와 0(1가지)은 서로 2의 보..
-
[CodingTest] CodeUP 기초 100제 마무리 완료! (by Python)Free Contents 2020. 9. 18. 01:53
코드업 기초 100제를 드디어 마무리했습니다. 저는 저에게 익숙한 파이썬으로 진행했는데, 금방 끝날 줄 알았던 문제풀이가 모두 완료되기까지 꽤 오랜 시간이 걸렸어요. 문제들이 기초 문법 다지기와 같은 것이 많았는데, 번거로우면서도 미처 몰랐던 작은 부분까지 차곡차곡 다져갈 수 있어서 좋은 경험이었단 생각이 듭니다. 요즈음 나동빈 님의 '이것이 취업을 위한 코딩 테스트다' 책을 유튜브와 병행하며 공부하고 있는데, 책에서 권하는 코딩 테스트 준비 로드맵의 첫 번째가 바로 'CodeUp 기초 100제' 풀기였습니다. 1단계를 마무리했으니 이제 조금 더 편한 마음으로 알고리즘 이론과 높은 난이도 문제 풀이에 집중할 수 있겠습니다. 기초 100제에 있는 문제는 전부 풀었는데, 3문제 정도는 원래 빠져있었나 봐요...
-
[코드업 1099번] 성실한 개미Coding Test/기타 2020. 9. 18. 01:15
# 문제 영일이는 생명과학에 관심이 생겨 왕개미를 연구하고 있었다. 왕개미를 유심히 살펴보던 중 특별히 성실해 보이는 개미가 있었는데, 그 개미는 개미굴에서 나와 먹이까지 가장 빠른 길로 이동하는 것이었다. 개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직여 가장 빠른 길로 움직였다. (오른쪽에 길이 나타나면 다시 오른쪽으로 움직인다.) 이에 호기심이 생긴 영일이는 그 개미를 미로 상자에 넣고 살펴보기 시작하였다. 미로 상자에 넣은 개미는 먹이를 찾았거나, 더 이상 움직일 수 없을 때까지 오른쪽 또는 아래쪽으로만 움직였다. 미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고, 먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자. 단, 맨 아래의 가장 오른쪽에 도착..