#.메모리 맵 유닉스 시스템이 제공하는 통신 기능은 크게 두가지로 구분할 수 있다. 1.동일한 시스템 안에 있는 프로세스 사이에서 통신을 수행하는 것 2.두번째는 서로 다른 시스템에서 수행하고 있는 프로세스 사이에서 통신으로 데이터를 주고 받는 것. 프로세스 간 통신 : 동일한 유닉스 시스템 안에서 수행 중인 프로세스끼리 데이터를 주고받는 것 예) 파이프(pipe) 같은 특수 파일을 이용하거나, 메모리 매핑이나 공유 메모리 같은 메모리 영역을 이용하는 방법이 있다. 또한 메시지 큐, 공유 메모리, 세마포어 등 유닉스 시스템 V에서 제공하는 IPC 방법이 있음. 네트워크를 이용한 통신 : 유닉스 시스템에서 네트워크를 이요한 통신은 TCP/IP 프로토콜을 기본으로 하고 있으며, 소켓 라이브러리를 이용한다. ..
#.프로세스와 스레드 앞에서 Fork() 함수로 프로세스를 복사하는 법을 다루어보았는데. 이방법은 자원의 효율성이 떨어진다. 프로세스의 code, data, stack, file I/o, signal table 의 정보가 모두 복사되기 때문이다. 코드의 일부만 병렬로 실행시키고 싶을때는 낭비가 아닐 수 없다.그래서 스레드의 개념이 나왔다. 스레드는 한프로세스안에서 자원을 공유하면서 빠르게, 효율적으로 작업을 처리 할 수 있다. 프로세스는 독립적인자원을 가지는 반면에 스레드는 stat, memory등 자원을 공유한다. 그리고 프로세스는 자신만의 주소공간을 가지지만 스레드는 주소공간을 공유한다. 프로세스는 IPC를 이용해야만 통신이 가능하다. 그리고 스레드의 문맥교환은 프로세스의 문맥교환 보다 빠르다. 하지..
#참고. [운영체제 실습] 7.시스템 정보 다루기 - (로그인, 패스워드 정보) [운영체제 실습] 8.시스템 정보 다루기 - (그룹, 시간) 1.uname 함수를 사용해 myname 명령을 만든다. myname 명령은 시스템의 호스트명, 운영체제 릴리즈 및 버전, 하드웨어 아키텍처 정보를 출력한다. myuname의 옵션은 다음과 같다. 2.sysinfo 함수를 사용해 myuname을 구현하라. 3.사용자가 입력한 로그인 id의 길이가 시스템의 최대 로그인명 길이보다 긴지 확인하는 프로그램을 작성하라. 4.파일명을 명령행 인자로 받아 해당 파일의 소유자명과 그룹명을 출력하는 프로그램을 작성하라. 5.사용자명을 입력받아 해당 사용자의 기본 그룹과 2차 그룹을 모두 검색해 출력하는 프로그램을 작성하라. 6.사..
*참고 [운영체제 실습] 6.파일과 디렉토리 1.파일의 정보를 추출하는 프로그램을 작성하라. 정보를 알고 싶은 파일의 이름은 명령행 인자로 받는다. 예) 2.입력받은 파일의 접근 권한을 출력하고, 접근 권한을 변경하는 프로그램을 작성하라. 문자모드 기능을 구현한다. 예)./mychmode g+w a.c 3.입력받은 파일의 접근 권한을 출력하고, 접근 권한을 변경하는 프로그램을 작성하라. 숫자모드 기능을 구현한다. 예)./mychmode 0777 a.c 4.디렉토리가 비어 있는지 확인 후 메시지를 출력하고, 비어 있으면, 해당 디렉토리를 삭제하는 프로그램을 작성하라. 5.디렉토리명을 명령행 인자로 입력받아 디렉토리를 생성하고, 작업 디렉토리를 새로 생성한 디렉토리로 이동시키는 프로그램을 작성하라. 6. ’..
*참고글 1.에러및 low 레벨 파일다루기 2.라이브러리를 이용한 파일다루기 1.저수준 파일 입출력을 이용해 mycat 프로그램을 작성하라. 출력 시 행 번호를 붙여서 출력한다. 파일명은 명령행 인자로 받는다. 예) ./mycat han.c 2.저수준 파일 입출력을 이용해 파일을 복사하는 프로그램을 작성하라. 파일명은 명령행 인자로 받는다. 예) ./mycp han.c bit.c (han.c 를 bit.c로 복사) 3.lseek 함수를 사용해 데이터 파일을 읽고 아래 출력 형태와 같이 출력하는 프로그램을 작성하라. *데이터 파일내용 : abcdefg…..yz *출력내용 : acegik…uwy 4.연습문제 3번을 fread 와 write 함수를 사용해 동일한 결과를 출력하도록 작성하라. 5.고수준 파일 입..
컴퓨터의 구조 *메모리 : 메모리는 0 또는 1의 열을 저장할 수 있는 장치다. 보통 8비트를 1바이트로 통합하므로 바이트 열을 저장한다고 할 수 있다. 바이트열은 프로그래머가 작성한 코드가 최종적으로 변환된 형태에 해당한다. *cpu : cpu는 내부에 레지스터 라는 작은 장치가 있다. cpu는 메모리부터 레지스터에 데이터를 복사하여 연산을 수행후, 다시 메모리에 되돌려서 메모리의 값을 바꾼다. *hdd : hdd 나 ssd는 메모리처럼 바이트 열을 저장하는 장치지만, 메모리와 비교해서 조금 다르다. 1.일정한 바이트 단위로만 데이터를 주고 받을 수 있다. 2.일반적으로 용량이 메모리 보다 크다. 3.속도가 메모리 보다 느리다. 4.전원이 꺼져도 데이터는 보관 된다. *키보드,마우스 : 키보드나 마우스..