분류 전체보기

Study/시스템프로그래밍

[시스템프로그래밍] 스레드

스레드의 장점 비동기 이벤트를 효율적으로 처리할 수 있다. 공유 메모리 다중프로세서에서 병렬 성능을 얻을 수 있다. 각 스레드는 스택과 CPU 상태(즉, 레지스터)로 구성된 실행 단위 Multiple 스레드는 Multiple 프로세스와 유사하지만, 작업 내의 여러 스레드는 동일한 코드, 전역 변수 및 힙을 사용. Unix에서 두 개의 프로세스는 운영 체제를 통해서만 통신 가능 (예: 파일, 파이프, 소켓) 그러나 작업 내의 두 스레드는 메모리를 통해 통신 가능 스레드를 사용하여 프로그램을 작성할 때, 이들이 동시에 실행된다고 가정한다. 각 스레드가 자체 CPU에서 실행되는 것처럼 보여야 하며, 모든 스레드가 동일한 메모리를 공유하는 것처럼 보여야 한다. 멀티태스킹 단일 프로세서에서 멀티스레딩은 일반적으로..

Study/시스템프로그래밍

[시스템프로그래밍] 시간과 타이머

POSIX Times 시스템은 Epoch 이후로 경과한 시간을 초 단위로 유지해야 Epoch은 세계 표준시 (Coordinated Universal Time, UTC, Greenwich Mean Time 또는 GMT로 불리기도 함) 기준으로 1970년 1월 1일 자정 00:00으로 정의됨 POSIX는 구현이 시스템 시간을 실제 시간과 날짜에 어떻게 정렬해야 하는지 명시 X #include time_t time(time_t *tloc); 시스템 시간에 접근한다 (Epoch 이후로 경과한 시간을 초 단위로 표현). tloc: NULL이 아닌 경우, 함수는 시간을 *tloc에 저장 time_t: long 형식 성공한 경우, Epoch 이후로 경과한 초의 수 반환 실패한 경우, (time_t)-1 반환 → 필수..

Study/시스템프로그래밍

[시스템프로그래밍] Signals

signal은 이벤트가 일어났을 때 발생했다는 사실을 프로세스에게 전달해주는 software notification다. 명령어 kill을 주면 목적지로 시그널을 준다. -l option은 available symbolic signal names의 list들을 준다. 프로세스는 도착한 시그널에 대해서 처리를 해줘야한다. → 시그널이 왔을 때 프로세스가 취해줘야 되는 default action이 있다. 터미널에서 ctrl+c → interrupt signal이 발생해서 지금 돌고 있는 프로세스에게 전달이 된다. 그러면 프로세스는 하던 작업을 멈추고 default action을 수행한다.(여기서는 강제 종료) Generating Signals #include int kill(pid_t pid, int sig)..

Study/선형대수학

[선형대수학] 그램-슈미트 과정, 행렬식, Cramer's rule

그램-슈미트 과정 임의의 벡터 집합으로부터 직교집합(Orthogonal set)을 구하는 과정 벡터를 다른 벡터에 사영시킨 것을 이용해 직교집합을 구할 수 있다. 집합이 직교집합인지 확인하는 것은 집합의 각 원소들에 대해 내적을 수행하는 것으로 확인할 수 있다. 예제를 풀어볼까? W = span{x1,x2,x3}의 직교기저를 구하여라 x1 = [1, -1, 2] x2= [2, 0, -1] x3 = [3, -1, -2] x1과 x2는 내적 결과 직교집합이다. x1 → v1, x2 → v2라 두자. v3 = x3 - ( ( x3와 v1의 내적 / v1과 v1의 내적) * v1 ) - ( ( x3와 v2의 내적 / v2와 v2의 내적) * v2 ) v3 = [3, -1 -2] - 0 - 8/5 * [2, 0,..

Life/TIME(동아리)

[TIME] 부정적인 감정과 행복에 대한 칼럼을 선택한 이유

4년 전, 2020년에 저는 재수를 하러 기숙학원에 있었습니다. 특별한 이유가 아니면 학원 밖으로 나갈 수 없었습니다. 공부는 힘들었지만 그 힘듦을 털어놓을 수 있는 누군가가 제 곁에 있지 않았습니다. 돌이켜보면 그 사실이 제일 힘들었던 것 같습니다. 하루는 공부할 에너지도 없이 너무나도 우울했습니다. 이런 기분을 벗어나고자 책을 덮고 행복한 상상을 시작했습니다. 상상 속에서 저는 하늘을 날고 있었습니다. 비록 현실에서는 어디도 가지 못하고 책상 앞에 앉아있을 수 밖에 없었지만, 그래도 상상을 하는 순간만큼은 행복했습니다. 하지만 상상만으로는 부족했습니다. 하루종일 상상만 하며 살 수는 없습니다. 그래서 저는 웃어보기로 했습니다. 웃음을 지을 일이 생기지 않았지만, 나는 행복하다를 되뇌며 미소를 지었습니..

Study/인공지능

[인공지능] 지식의 표현과 추론에 관하여 - 1

옛날에는 탐색으로 모든 문제를 해결하고자 노력했다(general problem solver(GPS)). → 하지만 매우 제한된 영역에서만 동작했다. 실제적인 문제 해결을 위해 나타난 시스템 → 전문가 시스템(expert knowledge) 전문가 시스템은 규칙으로 표현되는 지식을 통해 추론함으로써 복잡한 문제를 해결하도록 설계되었다. 인공지능 소프트웨어 최초의 성공적인 형태 지식의 중요성이 강조된다. 전문가 시스템 구성요소 지식베이스(Knowledge Base: KB) 어떤 특수한 문제 영역에 대한 사실이나 규칙으로 구성된다. 예시) 횡단보도에서 초록불이 켜지면 사람들이 건너간다. 추론엔진 KB에 있는 정보와 사실을 바탕으로, 사실로부터 규칙을 적용하는 과정을 진행하는 엔진 KB와 추론엔진은 독립적인 관..

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..

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