공부
-
유닉스 7장 파이프공부 2018. 11. 21. 17:33
7장 파이프를 이용한 프로세스간 통신 프로세스끼리 파일을 공유하도록 하는 방법임. 파이프는 한 프로세스를 다른 관련된 프로세스에 연결시켜주는 단방향의 통신채널이다. 1. 파이프 1-1 명령수준에서 파이프 $ pr doc | lp 를 수행하면 쉘은 명령 pr과 lp를 동시에 시작한다. 기호 |이 pr의 표준출력과 lp의 표준입력을 연결하는 파이프를 생성함을 의미함. pr은 표준출력이 파이프로 보내지는 것을 모르고 lp도 표준입력이 파이프에서 들어온느 것인지 모름. $pr doc > tmpfile $lp < tmpfile $rm tempfile 을 수행한 것과 같다. 파이프를 시용하면 여러 명령들을 간단히 하나로 연결할 수 있음. 1-2 파이프를 이용한 프로그래밍 #include int pipe (int f..
-
유닉스 6장 시그널공부 2018. 11. 21. 14:48
6장 시그널 1. 서론 유닉스는 프로세스간 통신기법을 제공함. 가장 많이 쓰이는게 시그널, 파이프, FIFO. 시그널은 쉘에서 컨트롤C와 같은 키를 사용해 명령을 중단시키거나 하는 행위임. 이러한 과정은 키보드 입력을 담당한 커널 부분이 인터럽트 문자를 감지하고 커널은 그 단말기를 제어 단말기로 인식하는 모든 프로세스에 SIGINT라는 시그널을 보낸다. SIGINT와 관련된 디폴트 동작을 수행하고 종료함. 그 단말기와 연관된 쉘 프로세스 또한 SIGINT 시그널은 받는데 쉘은 프로세스를 계속해서 명령을 처리해야 되기 때문에 무시함. 시그널은 오류처리에도 이용됨. 예를들어 SIGILL. 코어덤프같은게 SIGILL로 발견됨. KILL명령어로 SIGTERM 시그널을 보내 프로세스를 종료. 이와 같이 시그널은 ..
-
유닉스 3장 퍼미션공부 2018. 10. 10. 18:06
3장 문맥상의 파일 퍼미션에 대한 내용들에 대해 배움 1. 다중 사용자 환경에서의 파일 1-1 사용자와 소유권 유닉스 시스템의 모든 파일은 시스템 사용자 중 하나에 의해 소유됨. 이 사용자는 보통 파일을 생성한 사용자이다. 각 파일 소유자의 실제 신원은 사용자 식별 번호(uid)라 불리는 정수값으로 파일에 저장된다. 파일의 사용자 정보는 /etc/password에서 keith(사용자) : 암호 : uid : gid(그룹식별번호) :: 경로 한줄로 저장된다. 각 유닉스 프로세스는 그 프로세스를 시작하게 한 사용자의 사용자 번호를 가진다. 파일이 생성될 때 시스템은 파일을 생성하는 프로세스의 사용자 식별번호를 참조하여 소유권을 정한다. 파일의 소유권은 나중에 변경될 수 있다. 이는 시스템에서 특권을 가진 수..
-
유닉스 프로그래밍 2장 파일공부 2018. 10. 8. 21:40
2장 파일 1. 유닉스 파일 접근 프리미티브 1-1 서론 이 장에서는 프로그램 안에 파일을 다루기 위해 유닉스가 제공하는 기본적인 프리미티브들을 살펴본다. 프리미티브는 유닉스의 기본적인 명령어들을 지칭하는 듯? 앞으로 이렇게 부르겠음. 이들 기본 명령어들은 유닉스 커널에 의해 제공되는 I/O 설비에 직접 접근을 제공하는 시스템 호출들의 작은 집합으로 구성된다. 명령어로 open, create, close, read. write, lseek, unlink, remove, fcntl 이 있다. 기능은 명령어 이름을 보고 추측되는 것들이 다 맞음. 각각의 명령어에 대해 더 자세히 알아보자. 1-2 open 파일을 읽거나 쓰기전엔 반드시 open 시스템 콜로 파일을 열어야한다. 기본 꼴 : int open(co..
-
유닉스 프로그래밍 1장 기본개념과 용어공부 2018. 10. 6. 14:27
1. 파일 유닉스 시스템에서 정보는 파일에 저장된다. 파일은 그것을 생성한 사용자에 의해 어떤 종류의 논리적 구조를 갖는다. 예를 들어 문서는 단어, 구문, 문장, 페이지 등으로 구성됨. 그러나 시스템에 있어서는 모든 유닉스 파일은 단순한 구조화되지 않은 바이트 또는 문자들의 열로 표현된다. 유닉스 파일은 명확하고 일반적인 개념을 채택하고 있으며, 이들로부터 보다 복잡하고 특정한 구조도 개발할 수 있다. 유닉스는 서로 다른 유형의 파일들을 구별하지 않는다. 파일은 읽을 수 있는 텍스트를 수록할 수도 있고 이진자료를 수록할 수도 있음. 어떤 경우이든 같은 명령이나 유틸리티를 파일에 사용할 수 있다. 1-1 디렉토리와 경로이름 디렉토리는 파일의 집합으로, 한 시스템에 수록되어 있는 정보의 논리적인 구성을 가..
-
프로그래밍 언어론 2장공부 2018. 10. 2. 15:22
프로그래밍 언어의 발전사 이 장에선 여러가지 프로그래밍 언어들에 대한 설계 당시 주변환경과 그 언어의 공헌, 개발 동기에 대해 배운다. 각 언어에 도입된 어떤 새로운 특징들에 대해 살펴봄. 언어의 특징이나 개념을 상세하게 논의하진 않음. 1. Zuse의 Plankalkul 이 언어는 구현되지 않았다. 1945년에 개발되었지만 72년까지 출판되지 않았다. 그로인해 사람들은 이 언어에 대해 잘 알지 못했고 이 언어의 몇가지 기능들이 개발된지 15년 후에야 다른 언어들에 나타남. 1-1 역사적 배경 독일 과학자 Zuse는 전기 기계적인 계전기로부터 일련의 복잡하고 정교한 컴퓨터들을 만들었다. 2차대전때 다 파괴되고 Z4만 남았고 그후 그는 혼자 일하면서 Z4를 위한 계산을 표현하기 위한 언어를 개발하는 작업에..
-
프로그래밍 언어론 1장공부 2018. 10. 1. 19:55
컴퓨터 과학도와 개발자들이 언어 설계와 평가에 대한 일반적인 개념을 배워야 하는 이유가 뭘까? 1-1 프로그래밍 언어의 개념 학습 이유 1) 생각을 표현할 수 있는 능력이 향상된다. 사람이 생각할 수 있는 깊이는 그들의 언어 표현력에 영향을 받는다. 즉 사람이 말이나 글로 기술할 수 없는 구조를 개념화하는 것은 어렵다. 소프트웨어를 개발하는 과정에서도 데이터 구조, 제어 구조, 추상화의 종류, 알고리즘의 형태 등 제약을 받는다. 프로그래밍 언어의 특징에 대해 다양하게 알고 있으면 소프트웨어 개발에서 이런 제약을 줄일 수 있다. 2) 적합한 언어를 선택할 수 있는 배경이 향상된다. 많은 프로그래머들은 새로운 프로젝트를 위한 언어로 자기가 가장 잘 아는 언어를 쓴다. 근데 그 언어가 프로젝트에 적합하지 않는..
-
헬로코딩 5장 해시테이블공부 2018. 9. 21. 16:52
5챕터 해시테이블 탐색을 안하고 한번에 O(1)의 시간에 찾아내는 방법. 이게 해시함수임. 해시함수는 문자열을 받아서 숫자를 반환하는 함수이다. 문자열에 대해 숫자를 매핑한다고 할 수 있다. 이걸 어떻게 쓰느냐? 문자열을 데이터에 저장할 때 해시함수가 반환하는 위치로 저장을 하면 다음에 찾게될 때 해시함수를 통해 한번에 위치를 알아낼 수 있다. 해시함수와 데이터를 저장한 배열을 합쳐서 해시 테이블이라고 한다. 해시 테이블은 해시 맵, 맵, 딕셔너리, 연관 배열과 같음. 파이썬은 딕셔너리 c++에는 맵 STL으로 구현되어 있다. 해시테이블을 사용하는 예시) 휴대폰의 전화 번호부 -> 어떤 것을 다른 것과 연관시키고자 할 때나 무언가를 찾고자 할 때 쓰이기 좋다. 투표소에서 투표여부 확인 -> 해시테이블은 ..