본문 바로가기

컴퓨터 기초81

[운영체제 실습] 7.시스템 정보 다루기 - (로그인, 패스워드 정보) #.uname 함수 사용하기 - 운영체제 기본정보 검색 예제 결과 #.sysconf 함수 사용하기 - 시스템 자원정보 검색하기 예제 결과 #.pathconf - 파일과 디렉토리 관련 자원검색 예제 결과 #.getuid, geteuid 함수 사용하기 - 사용자 관련 정보 검색 예제 결과 chmod 4755 ex4_6 ls -l ex 4_6 이제 일반 사용자 아이디로 로그인해서 ./ex4_6 을 실행해보자. uid는 프로그램을 실행한 일반 사용자 uid가 나올 것이고, euid는 setuid가 설정되어 있으므로 ex4_6의 소유자인 root의 uid인 0으로 나온다. #.etc/passwd 파일에는 로그인명, uid, gid, 사용자의 홈디렉토리, 로그인 쉘등 사용자에 관한 기본적인 정보가 들어있다. #.g.. 2020. 6. 27.
[운영체제 실습] 6.파일과 디렉토리 1.파일명으로 inode 정보 검색하기 예제 결과 2.fstat 함수로 파일정보 검색하기 예제 결과 3.상수를 이용해 파일 종류 검색하기 예제 결과 4.매크로를 이용해 파일 종류 검색하기 예제 결과 5.상수를 이용해 파일 접근 권한 검색하기 예제 결과 6.access 함수를 이용해 접근 권한 검색하기 예제 결과 7.chmod 함수 사용하기 예제 결과 8.하드링크생성 예제 결과 9.심볼릭 링크생성 예제 결과 10.lstat 함수 사용하기 예제 결과 예제파일 참고 : 유닉스시스템 프로그래밍(한빛미디어) 2020. 6. 25.
[운영체제 실습] 5.파일 다루기(라이브러리) 1.한문자씩 읽고, 한문자씩 쓰기 예제 결과 2.한문자열씩 읽고 쓰기 예제 결과 3.fread 함수 예제 결과 4.fwrite 함수 예제 결과 5.형식기반 출력함수 예제 결과 6.서식을 지정해서 파일에 문자열 쓰기 예제 결과 7.파일 오프셋 예제 결과 8.파일 기술자와 파일 포인터 간 변화 예제 결과 9.fileno 함수 사용하기 예제 결과 예제파일 참고 : 유닉스시스템 프로그래밍(한빛미디어) 2020. 6. 23.
[운영체제 실습] 4.에러처리 및 파일 다루기(low level) 1.파일 접근함수 예제 결과 2.파일 열기 함수 예제 결과 3.오류 다루기 예제 결과 4.커멘드 인자 다루기 예제 결과 5.파일 디스크립터 및 파일 열기 시스템콜 예제 결과 6.파일 열기 및 파일 열기 모드, 권한 예제 결과 7.파일 디스크립터에 관하여 예제 결과 8.파일 읽기(시스템콜) 예제 결과 9.파일 읽고 쓰기 (시스템콜) 예제 결과 10.파일 오프셋(시스템 콜) 예제 결과 11.파일 디스크립터 복사 예제 결과 12.파일디스크립터 특성 설정하기 예제 결과 13.파일 삭제 예제 결과 파일이 삭제되고, Unlink tmp.aaa success!!! 출력이 된다. 예제파일 참고 : 유닉스시스템 프로그래밍(한빛미디어) 2020. 6. 23.
[운영체제 실습] 3.리눅스 커멘트라인 인자와 응용 1.커멘드라인 인자를 다루는 방법 예제) 결과) 2.파일을 읽어서 표준출력에 표시하는 방법 예제) 결과) hello 파일에 있는 "hello my name is kang" 값이 터미널에 출력되었다. 그 후 for문 안에서 n의 값, 즉 파일을 읽어 들인 값이 없기 때문에 더 이상 파일을 읽어들이지 않고 종료된다. 연습문제 *위에서 작성한 ./b 명령어를 수정하여 실행 인자가 없는 경우에는 표준 입력에서 읽도록 수정하라. *\n의 개수를 세어서 파일이 몇 줄로 구성되었는지 출력 하는 명령어를 작성하라 (wc-l 과 동일 기능) 참고: 모두를 위한 리눅스 프로그래밍 2020. 6. 22.
[운영체제 실습] 2.파일 쓰기와 파일 읽기 파일 쓰기와 파일 읽기 #파일열기 FILE *fopen(const char *pathname, const char *mode); 파라미터 - pathname: 파일 경로 - mode: 파일 열기 모드 반환값 - 성공 시 열린 파일 포인터(stream) - 실패 시 NULL #파일열기 모드 #파일닫기 int fclose(FILE *stream); 파라미터 - stream: 열린 파일 포인터 반환값 - 성공시0 - 실패시 EOF 예제 결과 #.인자로 파일명을 한 개 이상 받아 그 파일의 내용을 전부 표준 출력에 쓰는 프로그램 예제 결과 #.실행인자가 없을경우 표준 입력에서 읽도록 작성 예제 결과 #.인자로 파일명을 한 개 받아 줄바꿈 개수를 구하는 로직 예제 결과 #.stdio 라이브러리의 바이트 단위 입출.. 2020. 6. 16.
[운영체제 정리] 8.프로세스 동기화 프로세스 동기화 컴퓨터 안에서 데이터가 접근되는 패턴 데이터가 저장되어 있는 위치(메모리)에서 데이터를 가져와 연산(cpu)을 하고 다시 저장위치에 가져다 놓는다. 이때 데이터의 동기화 문제가 생긴다. 하나의 저장소에서 여러 사람이 공유 데이터에 접근한다면 데이터가 원하는데로 변경이 안될 가능성이 크고, 데이터의 일관성이 유지가 안될수 있고, 데이터 불일치 문제가 생길수 있다. 동기화 문제 여러사람이 하나의 공유 데이터에 접근할때 문제점.예를들어 두 프로세스에서 동시에 시스템 콜이 발생할때, 커널의 데이터에 동시에 접근되어 변경이 될때 문제가 될 수 있다. 동기화문제-커널에서 동기화 문제가 발생하는 경우 1.커널 수행중 인터럽트 발생시 2.프로세스가 시스템콜을 해서 커널모드로 수행중인데 타이머로인해 컨텍.. 2020. 6. 8.
[운영체제 정리] 7.멀티레벨 큐 멀티레벨 큐 레디큐를 여러개로 분한다. cpu를 기다리는 여러 큐가 존재한다 위로 갈수록 우선순위가 높다. 준비 큐를 여러개로 분할해 관리하는 스케줄링 기법을 말한다. 즉, 프로세스들이 cpu를 기다리기 위해 한줄로 서는 것이 아니라 여러줄로 서는 것을 말한다. 멀티레벨큐는 일반적으로 성격이 다른 프로세스들을 별도로 관리하고 프로세스의 성격에 맞는 스케줄링을 적용하기 위해 별도의 큐를 두게 된다. 여러개의큐 포그라운드 큐: 사용자와 소통 중심 백그라운드 큐: 배치 프로그램 큐 자체에 대한 스케쥴링 - 고정 우선순위 방식 고정적인 우선순위를 부여해 우선 순위가 높은 큐를 먼저 서비스 하고 우선순위가 낮은 큐는 우선순위가 높은 큐가 비었을때 서비스하게 된다.즉, 전위 큐와 후위큐를 사용하는 방식에서는 전위 .. 2020. 6. 7.
[실습과 그림으로 배우는 리눅스 구조] 3.프로세스 관리 프로세스 생성 목적 리눅스에서는 두가지 목적으로 프로세스를 생성한다. 목적1. 같은 프로그램의 처리를 여러 개의 프로세스가 나눠서 처리한다. 예를 들어, 웹서버처럼 리퀘스트가 여러개 들어왔을 때 동시에 처리해야 하는 경우. 목적2. 전혀 다른 프로그램을 생성한다. 예) bash로 부터 각종 프로그램을 새로 생성하는 경우. fork() 함수 같은 프로그램의 처리를 여러개의 프로세스가 나눠서 처리한다는 목적1에는 fork 함수만을 사용한다. fork 함수를 실행하면 실행한 프로세스와 함께 새로운 프로세스가 1개 생성된다. -순서 1.자식 프로세스용 메모리 영역을 작성하고, 거기에 부모 프로세스의 메모리를 복사한다. 2.fork()함수의 리턴값이 각기 다른 것을 이용하여 부모 프로세스와 자식 프로세스가 서로 .. 2020. 6. 6.