분류 전체보기

Study/시스템프로그래밍

[시스템프로그래밍] pipe에 관하여

pipe()를 호출하면 파이프를 만들고 두 개의 file descriptor table을 생성한다. → 읽기용 descriptor table(fd[0])과 쓰기용 descriptor table(fd[1]) 생성 부모와 자식이 pipe로 소통을 한다. 부모가 pipe 호출 파일 디스크립터 테이블 2개 생성 커널 안에 파이프 객체 생성 fd[1]을 가지고 작성, fd[0]으로 읽음 fork를 해서 자식 프로세스 생성 자식 프로세스는 대부분의 정보를 복사한다.→ 파일 디스크립터 내용 또한 복사됨 같은 파이프에 쓰고 읽을 수 있다. read한 데이터는 파이프에 저장되지 않고, 없어진다. 파이프 안에 read할 데이터가 있는데 read한 경우 → 그냥 read가 됨 파이프 안이 비어있는데 read한 경우 지금은 ..

Study/시스템프로그래밍

[시스템프로그래밍] 디렉토리 엔트리, hard/symbolic link, stat에 관하여

디렉토리 엔트리 디렉토리 엔트리 쌍: 파일명과 inode 번호 파일 정보는 inode에 있다 -> 포인터 정보들 (inode 안에 실제로 파일 내용들이 있는 것이 아니라, 이 포인터를 쫓아가야 파일 내용들이 있다. → 실제 파일들의 크기는 다른데 inode들의 크기는 같다.) 디렉토리 관련 명령어 chdir로 작업 디렉토리를 변경할 수 있다. 현재 작업디렉토리의 정보를 알아오는 시스템콜 → getcwd 디렉토리도 파일이다.(특별한 타입의) 모든 디렉토리 안에는 디렉토리 엔트리들이 있다. 디렉토리도 접근하려면 open을 해야한다. 디렉토리 오픈 → opendir 시스템 콜 사용 DIR *opendir (const char *dirname); dirname → 우리가 열고 싶은 디렉토리의 이름 DIR : d..

Study/인공지능

[인공지능] Genetic Algorithm Examples

Example1. A simple function optimization, f(x) = x2 on the integer interval [0,31] encoding scheme → binary unsigned integer of length 5 fitness function → 목표함수 이용 selection scheme → roulette wehel selection 사용 crossover, mutation scheme → one point parameter setting M(population size) = 4 → coin을 20번 던져서 initialization한다. Pc = 1 Pm = 0.001 Evolving process 01101 → 13 ( fitness는 13*13 = 169) % o..

Study/시스템프로그래밍

[시스템프로그래밍] 프로그램, 프로세스, 스레드에 관하여

Asynchronous operation 비동기식 operation. 사용자가 키보드를 누를 때 등.. 사용자가 하는 일은 Asynchronous operation unpredictable time(예측할 수 없는 시간에 일어난다) Concurrency 스레드: 하나의 실행 흐름 스레드를 하나 띄울 때마다 스레드가 할 일을 구현해야하는데 그 일을 함수가 한다. 2개의 스레드가 돌고 있다. → 2개의 독립적인 실행 흐름이 있다. concurrent와 비슷한 말: simultaneous(뜻은 둘 다 동시에) 어떻게 두 개가 동시에 돌리는 것처럼 보이게 만들 수 있을까 → 매우 빠르게 번갈아가면서 실행한다. Multiprogramming 프로세스가 생성이 되면 메모리에 위치하게 된다. 그 위치는 ready q..

Study/시스템프로그래밍

[시스템프로그래밍] 리눅스 터미널과 명령어 요약 - 2

chmod 사용자 권한을 바꿀 수 있다. -rw-r—-r— 첫 번째: owner에게 주어진 권한 두 번째: 이 파일의 그룹 사용자에게 주어진 권한 세 번째: 그 외의 사람들에게 주어진 권한 문법: chmod [user/group/others/all] +(-)[permission].[file(s)] ex) 모두한테 실행 권한을 준다. 예시) chmod a+x test.txt touch touch test.txt → test.txt 생성 ps ps : 지금 running되는 process를 볼 수 있다. kill kill: process를 죽이고자 할 때 사용한다. ex) kill -9(시그널) 1255(프로세스ID) input/output redirection (”piping”) program_a | pr..

Study/시스템프로그래밍

[시스템프로그래밍] 리눅스 터미널과 명령어 요약 - 1

터미널 구성 The host / The current directory(”path”) / The “prompt”(키보드 입력을 받을 준비가 되었다는 뜻) shell 리눅스에서 로그인을 하면 shell이라는 프로그램이 실행된다. shell은 명령어를 해석해서 실행하는 프로그램 shell 종류: tcsh, csh, korn, bash(본쉘) Shell commands are CASE SENSITIVE!(대소문자 구분한다는 뜻) 명령어의 사용법을 알고 싶다면? man을 입력하고 (한 칸 띄고 )그 뒤에 알고 싶은 명령어를 입력한다. 리눅스에서 모든 명령어의 옵션은 앞에 - 기호를 붙인다. 명령어 -n -e를 둘다 쓰고싶다면? command -ne라고 입력 echo는 그냥 그대로 출력해주는 명령어 리눅스 경로 ..

Study/인공지능

[인공지능] Genetic Algorithm 요약

조합 최적화 (Combinatorial Optimization, CO) VLSI 디자인에서의 배치 및 라우팅 문제: VLSI 셀들의 집합이 주어지며, 이들은 경계에 포트를 가지고 있다. 또한 포트를 연결해야 하는 네트워크의 모음도 주어진다. 전체 배치 및 배선 거리를 최소화하고 각 선이 특정한 상수 이하인 방법을 찾아야 한다. 외판원 문제 (The Traveling Salesman Problem): 외판원은 최소 비용으로 각 도시를 한 번만 방문하는 경로를 찾고자 합니다. 실행 가능한 해는 1부터 n까지의 숫자의 순열로 나타낼 수 있습니다. 따라서 해 공간의 크기는 (n-1)!이다 Local Search 부분 탐색 알고리즘 이전 값에 가까운 값으로 할당 공간 내에서 값을 수정 모든 제약 조건이 만족될 때..

Study/인공지능

[인공지능] Monte Carlo Tree Search 요약

플레이어의 이익이나 손실은 정확히 상대방들의 이익이나 손실과 균형을 이룬다. 전통적인 전략 - MinMax 각 상태에서 상대방의 최대 보상을 최소화하려고 시도 (나시 균형) 철저한 탐색 밴딧 기반 메소드 K개의 행동/움직임 중 선택 최상의 움직임을 계속해서 선택하여 누적 보상을 극대화해야 함 • 밴딧 기반 메소드는 가장 불확실한 가지를 **탐색(Exploration)**하고 가장 유망한 가지를 **개발(Exploitation)**하는 효율적인 트레이드오프로 알려져 있어서 트리 탐색에 사용된다. • 상한 신뢰 구간 (UCB) 밴딧 알고리즘은 트리 탐색에 적용되며 UCT (트리에 적용된 상한 신뢰 구간)라고 한다. MCTS overview 부분 탐색 트리를 반복적으로 구축 반복 가장 긴급한 노드 트리 정책 ..

Study/인공지능

[인공지능] Min-Max Algorithm 요약

Min-Max 알고리즘은 두 명의 플레이어가 참여하는 게임에서 적용된다. 예시: 체스, 바둑, 틱택토 등과 같은 게임 두 명의 플레이어 게임의 특징 논리 게임: 게임은 규칙과 약속의 집합으로 설명이 가능하다. 완전 정보 게임: 게임의 특정 시점에서 가능한 다음 움직임을 알 수 있다. Min-max Algorithm은 깊이 우선: 현재 게임 위치에서 시작하여 종료 게임 위치까지 이어진다. 최종 게임 위치는 Max 플레이어의 관점에서 평가된다. 트리의 내부 노드 값은 하향식으로 평가된 값으로 채워진다. Max 플레이어에 속하는 노드는 자식 노드 중 최대 값을 받는다. Min 플레이어에 속하는 노드는 자식 노드 중 최소 값을 받는다. Max 플레이어는 마지막에 가장 높은 가치를 갖는 움직임을 선택하려고 노력한..

Study/인공지능

[인공지능] 탐색(Search) 요약

맹목적 탐색: 정해진 순서에 따라 상태 공간 그래프를 점차 생성해 가면서 해를 탐색 하는 방법 깊이 우선 탐색 (DFS) 해가 존재할 가능성이 존재하는 한 앞으로 계속 전진, 즉 깊이 방향으로 탐색 • 최근에 생성된 노드를 가장 먼저 확장 • 노드의 깊이 Root node의 깊이는 1 자손인 노드의 깊이 = 부모노드의 길이 + 1 • 백트래킹(backtracking)을 위해 깊이 제한을 둔다. DFS의 알고리즘 출발노드를 OPEN에 넣는다. OPEN에 노드가 남아있는 동안 다음을 반복한다. OPEN의 제일 앞에 있는 노드를 꺼내어 CLOSED에 넣는다.(이 노드를 n이라고 부름) n의 길이가 깊이 제한에 도달하지 않았다면 다음을 실행한다. 노드 n을 확장하여 모든 후계노드를 생성 생성된 후계노드들에게 부..

퀵차분
'분류 전체보기' 카테고리의 글 목록 (10 Page)