컴퓨터 기초/운영체제 실습26 우분투 기초 - 1 유닉스의 탄생 유닉스 운영체제가 탄생하면서 어플들은 하드웨어에 종속되지 않고, 운영체제에 종속된다. 어플들은 무조건 운영체제를 거쳐서, 하드웨어나 메모리에 접근할 수 있다. 이전에는 어플들이 컴퓨터에서 돌아갈려면 컴퓨터에 설치된 하드웨어에 맞아야 했는데, 유닉스 탄생이 후 운영체제에만 맞으면 된다. 쉘의종류 프롬프트에서 $사인은 일반사용자를 뜻한다. #사인은 ROOT 사용자를 뜻한다. sudo (super user do) su (switch user) #.파일시스템의 구조 운영체제를 사용하는 이유는 쉘이라는 명령 프롬프트를 통해서 프로그램을 자유롭게 실행. 실행하려면 프로그램을 다운로드해야한다. 만약 리눅스에서 파일을 다운로드 하면 다운로드 후, 어떤 파일에 저장이 될까? cd / (change dire.. 2021. 1. 11. c언어 문자 치환 - 특정 문자 찾아서 바꾸기 c언어 문자 치환 - 특정 문자 찾아서 바꾸기 5-1. c언어 파일입출력 함수를 이용해서 파일의 단어수 체크하기(응용예제) 5-2. c언어 파일함수로 특정 문자 찾기(응용예제) 이전 포스팅에서 c언어 파일,문자함수를 이용해서 특정 단어수를 체크해서 출력하고, 특정 문자가 포함되어 있는 열을 찾아서 출력해주는 예제를 살펴보았다. 이번에는 c언어 함수를 이용해서 파일에서 문자를 치환하는 예제를 살펴보려고 한다. 예를들어 파일 여러 줄에 hi 라는 단어가 있다면 전부 찾아서 hello 로 변경해주는 예제이다. c 파일을 컴파일 한 뒤 실행파일명 문자치환을할 파일명 치환할대상문자 치환문자 순으로 입력하면 된다. 예) ./searchword.o log caa can searchword.o 실행파일에서 log 파일.. 2021. 1. 8. c언어 파일함수로 특정 문자 찾기 c언어 파일함수로 특정 문자 찾기 지난 포스팅(c언어 파일입출력 함수를 이용해서 파일의 단어수 체크하기)에서는 파일 함수를 이용해서 특정문자가 포함되어 있는 줄을 찾아서 출력하는 예제를 살펴 보았다. 예를들어 onec one time라는 문자가 있고 one을 찾으면 onec one time 노란색으로 표시된 두 문자가 one을 포함하고 있기 때문에 one을 포함하는 단어는 2개라고 출력했다. 이번에는 c언어 파일 함수를 이용해서 찾을려고 하는 문자와 일치하는 경우에만 카운터를 해서 일치하는 문자수와 해당 라인을 출력해주는 예제를 살펴보자. 이번에는 one 이라고 검색하면 onec one time 처럼 one 만 찾아서 일치하는 단어는 하나라고 표현해 준다. 예제 searchword.c 아래 소스를 보면 .. 2021. 1. 7. c언어 파일입출력 함수를 이용해서 파일의 단어수 체크하기 c언어 파일입출력 함수를 이용해서 파일의 단어수 체크하기 C언어의 파일 입출력 함수를 이용해서 파일을 읽고, 그 파일에서 찾고 싶은 단어의 개수를 검색해서 총 몇개의단어가 있는지, 그 단어가 있는 라인은 몇번 째 줄인지를 출력해주는 예제를 만들어 보자. 예제에서 사용된 함수는 아래와 같다. 1.access(파일명, 모드) : 프로세스가 지정한 파일이 존재하는지, 읽거나 쓰거나 실행이 가능한 지를 확인하는 함수다. 접근 가능하면 0, 접근이 불가능하면 -1 리턴한다. 2.perror(내용) : 오류 출력 함수. 3.fopen(파일경로, 모드) : 파일 기술자를 연다. 4.feof(파일 기술자) : 파일을 읽다가 파일의 끝이면 1, 끝이 아니면 0을 반환한다. 5.fgets(담을변수, 변수사이즈, 파일기술자.. 2021. 1. 6. 19.메시지큐, 공유 메모리, 세마포어 - ipc #.키와 식별자 시스템 V IPC를 사용하려면 IPC의 객체를 생성해야 하는데, 이를 위해 공통적으로 사용하는 기본 요소가 키와 식별자이다. #.키생성 방법 -키로 IPC_PRIVATE를 지정한다 IPC_PRIVATE를 키로 지정해 생성된 식별자를 서버와 클라이언트 모두 알 수 있게 해야 한다. fork 함수로 생성된 부모-자식 프로세스 간 통신에서 유용하게 사용할 수 있다. -ftok 함수로 키를 생성한다. ftok 함수는 경로명과 숫자값을 받아서 키를 생성한다. 따라서 서버와 클라이언트가 같은 경로명과 숫자값을 지정하면 공통 식별자를 생성할 수 있다. *상수 : IPC_PRIVATE *키 생성 : key_t ftok(const char *path, int id); *IPC 정보 검색 : ipcs [-.. 2020. 7. 21. 18.파이프 #.파이프 파이프는 두 프로세스 사이에서 한 방향으로 통신할 수 있도록 지원한다. 종류 *이름있는 파이프 *이름없는 파이프 #.이름없는 파이프 부모-자식 프로세스 간에 통신할 수 있게 해준다. 부모 프로세스에서 fork 함수를 통해 자식 프로세스를 생성하고, 부모 프로세스와 자식 프로세스 간에 통신하는 것이다. (자식 프로세스가 출력한 내용을 부모 프로세스에서 읽을 것인지 둘 중 한 방향을 선택해야 한다.) *간단한 파이프 생성 FILE *popen(const char *command, const char *mode); int pclose(FILE *stream); *복잡한 파이프 생성 int pipe(int fildes[2]); #.파이프 생성: pipen(3) #include FILE *popen(c.. 2020. 7. 20. 17.메모리 매핑 #.메모리 맵 유닉스 시스템이 제공하는 통신 기능은 크게 두가지로 구분할 수 있다. 1.동일한 시스템 안에 있는 프로세스 사이에서 통신을 수행하는 것 2.두번째는 서로 다른 시스템에서 수행하고 있는 프로세스 사이에서 통신으로 데이터를 주고 받는 것. 프로세스 간 통신 : 동일한 유닉스 시스템 안에서 수행 중인 프로세스끼리 데이터를 주고받는 것 예) 파이프(pipe) 같은 특수 파일을 이용하거나, 메모리 매핑이나 공유 메모리 같은 메모리 영역을 이용하는 방법이 있다. 또한 메시지 큐, 공유 메모리, 세마포어 등 유닉스 시스템 V에서 제공하는 IPC 방법이 있음. 네트워크를 이용한 통신 : 유닉스 시스템에서 네트워크를 이요한 통신은 TCP/IP 프로토콜을 기본으로 하고 있으며, 소켓 라이브러리를 이용한다. .. 2020. 7. 20. 16.스레드 #.프로세스와 스레드 앞에서 Fork() 함수로 프로세스를 복사하는 법을 다루어보았는데. 이방법은 자원의 효율성이 떨어진다. 프로세스의 code, data, stack, file I/o, signal table 의 정보가 모두 복사되기 때문이다. 코드의 일부만 병렬로 실행시키고 싶을때는 낭비가 아닐 수 없다.그래서 스레드의 개념이 나왔다. 스레드는 한프로세스안에서 자원을 공유하면서 빠르게, 효율적으로 작업을 처리 할 수 있다. 프로세스는 독립적인자원을 가지는 반면에 스레드는 stat, memory등 자원을 공유한다. 그리고 프로세스는 자신만의 주소공간을 가지지만 스레드는 주소공간을 공유한다. 프로세스는 IPC를 이용해야만 통신이 가능하다. 그리고 스레드의 문맥교환은 프로세스의 문맥교환 보다 빠르다. 하지.. 2020. 7. 16. [유닉스 프로그래밍] 시스템정보 다루기 연습문제 #참고. [운영체제 실습] 7.시스템 정보 다루기 - (로그인, 패스워드 정보) [운영체제 실습] 8.시스템 정보 다루기 - (그룹, 시간) 1.uname 함수를 사용해 myname 명령을 만든다. myname 명령은 시스템의 호스트명, 운영체제 릴리즈 및 버전, 하드웨어 아키텍처 정보를 출력한다. myuname의 옵션은 다음과 같다. 2.sysinfo 함수를 사용해 myuname을 구현하라. 3.사용자가 입력한 로그인 id의 길이가 시스템의 최대 로그인명 길이보다 긴지 확인하는 프로그램을 작성하라. 4.파일명을 명령행 인자로 받아 해당 파일의 소유자명과 그룹명을 출력하는 프로그램을 작성하라. 5.사용자명을 입력받아 해당 사용자의 기본 그룹과 2차 그룹을 모두 검색해 출력하는 프로그램을 작성하라. 6.사.. 2020. 7. 15. 이전 1 2 3 다음