3. 다음그림은프로세스의 file table 과 v-node 테이블의연결관계예제이다. 위그림을참고하여두개의서로다른프로세스가같은파일을 open 명령을사용하여열었을때의연결관계를도시하시오. 4. 메모리영역은 low-address 부터 high-adress 까지순서대로나열했을

Similar documents
학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다. / /bin/ /home/ /home/taesoo/ /home/taesoo/downloads /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자 (t

학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력

슬라이드 1

chap7.key

제1장 Unix란 무엇인가?

제1장 Unix란 무엇인가?

untitled

untitled

제12장 파일 입출력

PowerPoint 프레젠테이션

歯9장.PDF

강의10

학번 : 이름 1. 다음프로그램실행결과를예측하시오. $./a.out & [1] 7216 $ kill -USR $ kill -USR 아래학생이작성한쓰레드코드의문제점을설명하시오. void* thread_main() { pthread_mutex_t

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 4 가지중하나. (1) 프로그램수행직후, (2) kill 명령실행직후, (3) 15 #include <signal.

C 언어 프로그래밊 과제 풀이

PowerPoint 프레젠테이션

Microsoft PowerPoint - lab14.pptx

PowerPoint 프레젠테이션

03장.스택.key

Microsoft PowerPoint APUE(Intro).ppt

슬라이드 1

ABC 11장

LXR 설치 및 사용법.doc

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Sena Technologies, Inc. HelloDevice Super 1.1.0

PowerPoint 프레젠테이션

Chapter_06

PowerPoint 프레젠테이션

10.

Microsoft PowerPoint - [2009] 02.pptx

/chroot/lib/ /chroot/etc/

Microsoft PowerPoint - ch09_파이프 [호환 모드]

2009년 상반기 사업계획

PowerPoint 프레젠테이션

6주차.key

2009년 상반기 사업계획

중간고사

untitled

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap6 [호환 모드]

Microsoft Word ARM_ver2_0a.docx

KEY 디바이스 드라이버

휠세미나3 ver0.4

Microsoft PowerPoint APUE(File InO).pptx

Microsoft PowerPoint APUE(File InO)

11장 포인터

Microsoft PowerPoint - Lecture 4-1 Linux File Environment.ppt [호환 모드]

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Chapter #01 Subject

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 6 가지중하나. (1) 프로그램수행직후, (2) 5 초후 (3) 10 초후 (4) 15 #include <signa

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

본 강의에 들어가기 전

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

Microsoft PowerPoint APUE(File InO).ppt

BMP 파일 처리

Microsoft PowerPoint UNIX Shell.ppt


Microsoft PowerPoint - chap4 [호환 모드]


Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

MPLAB C18 C

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

고급 프로그래밍 설계

Solaris Express Developer Edition

2009년 상반기 사업계획

로봇SW교육원 강의자료

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

13주-14주proc.PDF

Microsoft PowerPoint - ch07 - 포인터 pm0415

vi 사용법

vi 사용법

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - chap10-함수의활용.pptx

chap 5: Trees

Microsoft PowerPoint - chap2

Microsoft PowerPoint - chap12-고급기능.pptx

금오공대 컴퓨터공학전공 강의자료

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

商用

Adobe Flash 취약점 분석 (CVE )

hlogin7

Microsoft PowerPoint - chap12 [호환 모드]

4. What will be the output of this program? Explain results for each variable and each thread. #include "apue.h" int var=1; pthread_mutex_t lock; void


Microsoft PowerPoint - chap11-포인터의활용.pptx

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

OCW_C언어 기초

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

로봇SW교육원 강의자료

Microsoft PowerPoint UNIX Shell.pptx

Microsoft PowerPoint - 제11강 파일 처리

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Transcription:

학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다. / /bin/ /home/ /home/taesoo/ /home/taesoo/downloads /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자 (taesoo) 가터미널에서다음 ls 명령입력시화면출력을예측하시오. $ ls /usr/. $ ls ~/.. $ cd $ pwd 2. 다음프로그램의실행결과를예측하세요. a.c: #include "apue.h" #include <fcntl.h> char buf1[] = "abcdefghij"; char buf2[] = "ABCDEFGHIJ\n"; int main(void) int fd; fd = creat("out", FILE_MODE); write(fd, buf1, 10); lseek(fd, -1, SEEK_END); write(fd, &buf2[5], 5); close(fd); return 0; 실행방법 : $ gcc a.c $./a.out $ cat out

3. 다음그림은프로세스의 file table 과 v-node 테이블의연결관계예제이다. 위그림을참고하여두개의서로다른프로세스가같은파일을 open 명령을사용하여열었을때의연결관계를도시하시오. 4. 메모리영역은 low-address 부터 high-adress 까지순서대로나열했을때크게 text, data, heap, stack 영역으로구분된다. heap 과 stack 은두영역의경계선을향해서크기가확장된다. 이때아래프로그램에서출력되는각주소의영역을적고각주소 (A,B,C,D,E) 를크기가작은것부터순서대로나열하시오. ( 예 : ABCDE) #include <stdio.h> int a=3; int F(); int main() int k=0; int *l=malloc(10); F(); printf("b:%lu\n", &k); 실행결과 ( 숫자대신영역을적으세요 ): printf("c:%lu\n", &a); A: printf("d:%lu\n", &F); B: printf("e:%lu\n", l); C: D: int F() E: int l; 주소정렬결과 : printf("a:%lu\n", &l); return 0;

5. 다음 ll 명령의결과를보고아래질문에답하시오. (ll 은 ls -alf 의약자.) $ ll /usr/bin/passwd -rwsr-xr-x 1 root root 71824 Apr 9 2012 /usr/bin/sudo* $ ll /usr/bin/apt-get -rwxr-xr-x 1 root root 192592 Aug 21 07:38 /usr/bin/apt-get* $ ll /usr/bin/whoami -rwxr-xr-x 1 root root 27207 Aug 21 07:38 /usr/bin/whoami* 사용시나리오 : ~$ whoami taesoo ~$ apt-get install gcc E: Could not lock file /var/lib/dpkg/lock open (13: Permission denied) E: Are you root? ~$ sudo apt-get install gcc [sudo] password for taesoo: Reading package lists... Done gcc is already the newest version. (a) 위시나리오에서 whoami, 첫번째 apt-get 프로세스, sudo, 그리고두번째 apt-get 프로세스각각의 real user 와 effective user 를각각적으시오. Real user Effective User whoami: apt-get (1st): sudo: apt-get(2st) b) 두실행파일 sudo, apt-get 의파일권한이어떻게다른지설명하고, 그래야만하는이유를설명하시오.

c) bash -c ls 명령은 ls 명령과동일한결과를출력한다. bash 명령과 sudo 명령은모두 fork 와 exec 명령을사용하여구현되어있다. bash -c 를 sudo 처럼동작하게만들기위한 ( 즉 bash -c apt-get install gcc 로 gcc 를설치할수있게하기위한 ) 컴맨드라인명령줄을다음 bash 와 chmod 의매뉴얼을참고하여작성하시오. ( 보안위험성때문에이명령을실제로수행해서는안됨 ) /bin/bash NAME bash - GNU Bourne-Again SHell DESCRIPTION Bash is an sh-compatible command language interpreter that executes commands read from the standard input or from a file. OPTIONS -c If the -c option is present, then commands are read from the first non-option argument command_string. If there are arguments after the command_string, they are assigned to the positional parameters, starting with $0. /bin/chmod NAME chmod - change file mode bits SYNOPSIS chmod [OPTION]... MODE... FILE... chmod [OPTION]... OCTAL-MODE FILE... DESCRIPTION Chmod changes the file mode bits of each given file according to mode. A combination of the letters [ugoa] controls which users' access to the file will be changed: the user who owns it (u), other users in the file's group (g), other users not in the file's group (o), or all users (a). The operator + causes the selected file mode bits to be added to the existing file mode bits of each file; - causes them to be removed. You can set or clear the execute bits (x) with modes like u+x and u-x. You can set or clear the set-user-id/set-group-id bits with modes like u+s and g-s. 아래에명령줄을적으세요. ~$

6. Bourne-again 셸 (bash) 은다음과같은표기법을지원한다. n> 파일이름이것은해당파일을연후, 그파일서술자 fd 와같은파일로파일서술자 (file descriptor) n 을재지정하는것이다. 즉시스템호출 dup2(fd, n) 에해당한다. 숫자 n 생략시 n 은 1(stdout) 이다. ( 예 :./a.out > outfile 시 1 번파일서술자는 outfile 을가리킨다.) n>& fd 이것은파일서술자 (file descriptor) n 을파일서술자 fd 와같은파일로재지정하는것이다. 즉 dup2(fd, n) 에해당한다. 그렇다면다음명령수행후 outfile 의내용과화면내용을각각예측하시오. 소스코드 : void main() fprintf(stderr, err ); fprintf(stdout, out ); a) $./a.out > outfile 터미널화면 : outfile: b)./a.out 2>outfile 1>&2 터미널화면 : outfile: c) $./a.out 터미널화면 : outfile: d)./a.out 2>&1 > outfile 터미널화면 : outfile: e) $./a.out 2> outfile 터미널화면 : outfile: ( 힌트 : 셸은주어진명령줄을왼쪽에서오른쪽으로처리한다 )

7. a) 다음명령실행상황을읽어본후아래공란 ( ) 에적절한문자를적으시오. ~/temp$ umask 755 ~/temp$ touch a ~/temp$ touch b ~/temp$ chmod 755 b ~/temp$ ll total 16 drwx------ 2 taesoo taesoo 4096 Oct 15 16:47./ drwxr-xr-x 137 taesoo taesoo 12288 Oct 15 16:45../ ( ) 1 taesoo taesoo 0 Oct 15 16:47 a ( ) 1 taesoo taesoo 0 Oct 15 16:47 b -rw-r--r-- 1 taesoo taesoo 0 Oct 15 16:47 c ( 힌트 : touch 명령은빈파일을생성함. 파일 a 와파일 b 는파일권한이다름, ll 은 ls -alf 의약자.) b) 파일 c 의 permission( 권한 ) 을파일 a 와동일하게만드려면아래명령을수행해야함. 공란에적절한숫자를적으시오. ~/temp$ chmod ( ) a c) 다음 c 코드수행후셸에서 ll a 입력시결과를예측하시오. chmod( a, S_IRUSR S_IWGRP S_IROTH S_IWOTH); 8. ln b c 명령을사용해서 b 파일을 c 파일로하드링크를건후의 ll 결과이다. total 16 drwx------ 2 taesoo taesoo 4096 Oct 15 17:12./ drwxr-xr-x 137 taesoo taesoo 12288 Oct 15 16:45../ -rw-r--r-- 1 taesoo taesoo 0 Oct 15 16:47 a -rw-r--r-- 2 taesoo taesoo 0 Oct 15 16:48 b -rw-r--r-- 2 taesoo taesoo 0 Oct 15 16:48 c a) 여기서이숫자 2 를 3 으로바꾸는방법을한가지설명하시오. b) c 파일의숫자 2 를 1 로바꾸려면?

9. 사용자가다음프로그램을실행후 1234asdf<enter>zxcv#0987 의순으로입력을했을때출력을예측하시오. ( 따옴표는입력에포함안됨 ) 사용자가입력한내용과프로그램이출력한내용이콘솔에출력되는모양대로정확히적으시오. Hint: stdin 과 stdout 은기본적으로 linebuffered 임. 10. (a) 위프로그램에서 while 문앞에 char buf[100]; setvbuf(stdout, buf, _IOFBF,100); 명령추가시실행결과어떻게달라질지예측하시오. hint: int setvbuf(file* fp, char* buf, int mode, size_t size); // with setvbuf, we specify exactly which type of buffering we want. (b) 위프로그램에서 while 문앞에아래문장을사용하여입출력을모두 unbuffered 로바꾸었을때실행결과를예측하시오. char buf[100];int ch; struct termios oldattr, newattr; setvbuf(stdout, buf, _IONBF,100); tcgetattr( STDIN_FILENO, &oldattr ); newattr = oldattr; newattr.c_lflag &= ~ ICANON ; tcsetattr( STDIN_FILENO, TCSANOW, &newattr );

11. 다음프로그램의출력물을예측하시오. ( 컴파일은잘된다고가정 ) void cmd(); jmp_buf jmpbuffer; int main(int argc, char *argv[]) register int i=0; static int j=0; printf("a\n"); if(setjmp(jmpbuffer)!=0) printf("b\n"); printf("%d %d\n", i,j); // 출력물이정해지지않는경우? 로적으세요. return 0; i++; j++; printf("c\n"); cmd(); printf("d\n"); return 0; void cmd() int i=0; printf("e\n"); while(1) i++; if (i==2) longjmp(jmpbuffer, 1); printf("f\n"); 12. 다음프로그램의출력물을예측하시오. void m1(void) printf("1\n"); void m2(void) printf("2\n"); int main(void) printf( start\n ); atexit(m1); atexit(m2); atexit(m2); printf("done\n"); return 0;

13. 아래와같이 file1, file2, file3 의내용이확인되는상황을가정하자. ~/test$ cat file1 file1 ~/test$ cat file2 file2 ~/test$ cat file3 asdf lkj 이때아래명령어의출력결과를예측하시오. ~/test$ cat file3 cat /dev/fd/0 file1 file2 > /dev/fd/1 14. 다음프로그램의실행결과를예측하시오. ( 밑줄부분에답을적으세요 ) $./a.out arg1 TEST foo $ echo $? 15. 하드디스크상의특정파일의내용을복사하는프로그램을작성할때다음두가지방법중하나를써야만한다면, 둘중에어느것이속도가빠를지예측하고, 이유를간단히설명하시오. a) fgetc, fputc 함수를사용해서한바이트씩복사 b) read, write 함수에서 nbytes 값으로 1 사용해서한바이트씩복사참고 : ssize_t read(int filedes, void *buf, size_t nbytes);

16. 아래와같은파일의존성 (dependency 를가정하시오 ) a) bill.c 변경시재생성되어야하는파일들은? b) lib.h 변경시재생성되어야하는파일들은? c) 아래메이크파일의공란에필요한파일이름들을적으세요. program : () gcc o program main.o libfoo.a ---- (1) libfoo.a: ( ) ar crv libfoo.a ( ) ---- (2) main.o : lib.h main.c gcc c main.c ---- (3) bill.o : ( ) gcc c bill.c ---- (4) fred.o : ( ) gcc c fred.c ---- (5) d) static library 인 libfoo.a 를만들지않고한번에 gcc -o program main.o bill.o fred.o 를실행하면컴파일속도가느려질수있다. 어떤경우에그런지설명하시오. e) 위소스코드와메이크파일을만든후첫번째 make 와두번째 make 후실행되는명령을각각적으세요. ( 명령줄옆의숫자를사용하여예를들어 1-3-2 이런식으로적으세요.) 17. malloc 과 alloca 함수의차이를설명하세요.