SW 사관학교 정글(Jungle) 43

[CSAPP] 1-7. 운영체제는 하드웨어를 관리한다.

운영체제(Operation System, OS)란?`운영체제`는 컴퓨터의 하드웨어 자원을 관리하고, 사용자 및 응용 프로그램이 컴퓨터와 상호작용할 수 있도록 지원하는 소프트웨어의 집합이다.이전에 hello 프로그램을 로드하고 실행했을 때 프로그램이 키보드나, 디스플레이, 디스크나 메인 메모리를 직접 엑세스하지 않았다. 운영체제가 제공하는 서비스를 활용했다.아래 그림과 같이 하드웨어와 소프트웨어 사이에 위치한 소프트웨어 계층이라고 생각할 수도 있다.운영체제의 두 가지 목적제멋대로 동작하는 응용프로그램들이 하드웨어를 잘못 사용하는 것을 막기 위해응용프로그램들이 단순하고 균일한 매커니즘을 사용하여 복잡하고 매우 다른 저수준 하드웨어 장치들을 조작할수 있도록 하기 위해컴퓨터 시스템 계층화 모습운영체제에 의한 추..

[CSAPP]1-5, 1-6 캐시와 저장장치 계층구조

https://jinsang-2.tistory.com/76 [CSAPP]1-2,1-3 컴파일 시스템#inclue int main(){ printf("hello, world\n"); return 0;}hello.c를 시스템에서 실행시키기 위해 저급 기계어 인스트럭션들로 번역되어야 한다!!컴파일 시스템 = 전처리기 + 컴파일러 + 어셈블러 + 링커Pre-processor:jinsang-2.tistory.com앞에서 살펴 봤듯이, 시스템이 정보를 한 곳에서 다른 곳으로 이동시키는 일에 많은 시간을 보낸다. 데이터 복사과정1. 기계어 인스트럭션프로그램의 기계어 인스트럭션들은 하드디스크에 저장되어 있다.프로그램이 로딩되면 디스크의  프로그램이 메인메모리로 복사된다.프로세서가 프로그램을 실행하면 인스트럭션들이 메인..

[CSAPP]1-4 프로세서는 작동 원리

프로세서는 메모리에 저장된 인스트럭션을 읽고 해석한다실행가능한 목적파일로 번역되어 디스크에 저장된 hello 실행파일을 유닉스 시스템에서 실행하는 과정을 알아보자!쉘hello 실행파일을 유닉스 시스템에서 실행하기 위해 쉘이라는 응용프로그램에 그 이름을 입력한다.linux> ./hellohello, worldlinux>쉘은 커맨드라인 인터프리터로 프롬프트를 출력하고 명령어 라인을 입력 받아 그 명령을 실행한다.명령어 라인이 내장 쉘 명령어가 아니면, 쉘은 실행파일의 이름으로 판단하고 그 파일을 로딩해서 실행해준다.→ 쉘은 hello 프로그램을 로딩하고, 실행한 뒤에 종료를 기다린다.hello 프로그램은 메시지를 화면에 출력하고 종료한다.쉘은 프롬프트를 출력해주고 다음 입력 명령어 라인을 기다린다.시스템의 ..

[CSAPP]1-2,1-3 컴파일 시스템

#inclue int main(){ printf("hello, world\n"); return 0;}hello.c를 시스템에서 실행시키기 위해 저급 기계어 인스트럭션들로 번역되어야 한다!!컴파일 시스템 = 전처리기 + 컴파일러 + 어셈블러 + 링커Pre-processor: 전처리 단계전처리기(cpp)은 본래의 C 프로그램을 # 문자로 시작하는 디렉티브(directive)에 따라 수정'~.i'로 끝나는 C프로그램 생성#으로 시작하는 문장 처리 -> '~.i'로 끝나는 C프로그램 생성#include : 시스템 헤더파일 stdio.h를 프로그램 문장에 직접 삽입해라Compiler: 컴파일러컴파일러(ccl)는 텍스트 파일 hello.i 를 텍스트 파일인 hello.s 로 번역하여, 이 파일에는..

[CSAPP] 1-1 비트(bit)와 컨텍스트(context)

컴퓨터 시스템 = 하드웨어 + 시스템 소프트웨어정보는 비트와 컨텍스트로 이루어진다.#inclue int main(){ printf("hello, world\n"); return 0;} 프로그래머가 에디터로 작성한 소스 프로그램(또는 소스파일)으로 시작hello.c라는 텍스트 파일로 저장 소스 프로그램(=소스파일)소스 프로그램은 0 또는 1로 표시되는 비트들의 연속이며, 바이트(8bit) 단위로 구성각 바이트는 프로그램의 텍스트 문자를 나타냄대부분의 컴퓨터 시스템은 텍스트 문자를 아스키(ASCII)표준을 사용하여 표시한다. 텍스트 파일hello.c 파일처럼 오로지 아스키 문자들로만 이루어진 파일들은 텍스트 파일이라고 부른다.다른 모든 파일들은 바이너리 파일이라고 한다. 컨텍스트(Context)사전적 ..

최소 신장 트리(MST, Minimum Spanning Tree)

신장 트리 (Spanning Tree)그래프 내의 모든 정점을 포함하는 트리그래프의 최소 연결 부분 그래프.최소 연결 : 간선의 수가 가장 적다n개의 정점을 가지는 그래프 = 최소 간선의 수는 n-1개 = n-1개의 간선으로 연결 = 트리 형태DFS, BFS을 이용하여 그래프에서 신장 트리를 찾을 수 있다.탐색 도중에 사용된 간선들을 모음하나의 그래프에는 많은 신장 트리가 존재정점(Vertex) : 모두 포함사이클 : X (트리임)최소 신장 트리(MST)란?가장 간선의 가중치 합이 가장 작은 트리를 의미한다. (최소 비용)MST 사용 사례통신망, 도로망, 유통망에서 길이, 구축 비용, 전송 시간 등을 최소로 구축하려는 경우도로 건설도시들을 모두 연결하면서 도로의 길이가 최소가 되도록 하는 문제전기 회로단..

위상 정렬(Topology Sort), boj(백준) 2252번 예시

위상 정렬(Topology Sort)순서가 정해져 있는 작업을 차례로 수행해야 할 때 그 순서를 결정해 주기 위해 사용하는 알고리즘이다.조건으로 해석 sw사관학교 정글을 수료하기 위해 신청을 해야하며 시험과 면접을 통과해야 하고 입소 후 주어진 과제들에 열심히 참여하여야(주100시간 밥먹고 똥싸고 개발만하기) 정글을 수료할 수 있다.위상 정렬 특징사이클이 발생하지 않는 방향 그래프이다.DAG : Direct Acyclic Graph : 사이클이 없는 방향 그래프시작점이 존재해야 한다. (전위차수 0)위상 정렬은 스택이나 큐를 이용한다.시간 복잡도 : O(V+E)위상 정렬 알고리즘 동작 과정진입차수가 0인 노드를 큐에 넣는다.큐가 빌 때까지 다음의 과정을 반복한다.큐에서 원소를 꺼내 해당 노드에서 나가는 ..

[알고리즘] 셸 정렬(shell sort)

셸 정렬단순 삽입 정렬(straight insertion sort) 장점은 살리고 단점은 보완하여 더 빠르게 정렬하는 알고리즘단순 삽입 정렬의 장점과 단점장점 : 이미 정렬을 마쳤거나 정렬이 거의 끝나는 상태에서는 속도가 아주 빠르다.단점 : 삽입할 위치가 멀리 떨어져 있으면 이동 횟수가 많아진다.사용방법 (정렬 시에는 모두 단순 삽입 정렬을 이용)ex) 8개 배열 일 때4-정렬 : 서로 4칸씩 떨어진 원소를 4개 그룹으로 나누어정렬하는 방법2-정렬 : 2칸씩 떨어진 원소를 모두 꺼내 두 그룹으로 나누고 정렬 실행1-정렬 : 정렬 되어 나온것들(3,1,4,2,7,5,8,6) 단순 삽입 정렬로 정렬총 7번의 정렬 실행2개 원소에서 4-정렬 수행 (4그룹, 4번)4개 원소에서 2-정렬 수행 (2그룹, 2번)..

[알고리즘] 단순 삽입 정렬(straight insertion sort)

단순 삽입 정렬 (straight insertion sort)주목한 원소보다 더 앞쪽에서 알맞은 위치로 삽입하며 정렬하는 알고리즘단순 선택 정렬과 비슷해 보이지만 다르다단순 선택 정렬은 값이 가장 작은 원소를 선택한다.단순 삽입 정렬은 값이 가장 작은 원소가 아니라 선택된 해당 원소가 있어야할 알맞은 위치를 왼쪽 원소와 비교하며 찾아 삽입한다.장점 : 이미 정렬을 마쳤거나 정렬이 거의 끝나는 상태에서는 속도가 아주 빠르다.단점 : 삽입할 위치가 멀리 떨어져 있으면 이동 횟수가 많아진다."알맞은 위치에 삽입" 과정선택된 해당 원소가 작은 원소를 만날 때까지 이웃한 왼쪽 원소를 하나씩 대입하는 작업을 반복한다.멈춘 위치에 해당 원소 대입종료 조건정렬된 배열의 왼쪽 끝에 도달한 경우tmp보다 작거나 키 값이 ..