본문 바로가기

공부공간/System programming

[시프 강의정리] unix system overview

반응형

Unix는 multi-user system 이다.

따라서 시스템을 이용하기전에 user ID, user PW를 입력하고 로그인해야 이용가능하다.

 

unix는 기본적으로 command line interface를 사용하는데 이 때 사용하는게 shell 이다.

shell

 

file, directory : file을 관리하기 위해 체계적인 계층적 시스템이 필요했는데 그게 바로 directory와 file들이다.

ex) /home/obama : directory와 file을 둘 다 알 수 있다. 그리고 가장 최초의 /는 root/ 를 의미한다.

pwd : print working directory

cd : change directory

cd /usr/bin : root/usr/bin 으로 이동하는데 이런 방식의 path를 절대경로라고 한다.

cd obama : 상대경로로 들어가는 방식인데. 현재 있는 디렉토리에 대해(상대적) obama라는 directory로 들어가라는 말이니까 상대경로.

 

home directory 와 working directory의 차이?

home directory

user가 로그인 했을 때의 위치.

나갈 때 까지 home directory는 변하지 않는다.

 

cd를 통해 현재 directory에서 나가면 home directory로 돌아온다.

working directory

지금 당장 내가 있는 위치, directory

working directory는 계속 변한다. 내가 이리저리 작업하면서 옮겨다닐 수 있다.

 

cd를 통해서 바꿀 수 있다.

 

 

Program, Process 차이?

program : 단순 실행파일

process : 실행파일을 실행시켰을 때의 동작하는 그 과정.(task라고도 한다)

 

 

Error

에러가 발생하면 음수값이 return 된다.

이 때, 발생하는 에러의 종류에 따라서 return되는 음수 값들이 다르다. 따라서 return값에 따라서 어떤 에러가 발생했는지 알 수 있다.

아래가 명령 프롬프트이다.

./a.out 이라는 프로그램을 실행시켰더니 int main()으로 들어간 상황이다.

"%s"로 strerror(EACCES)가 실행된 것을 볼 수 있는데, strerror라는 함수 안에서 EACCES는 "Permission denied"라는 내용과 맵핑되어 있기 때문에 저렇게 출력된거다.

그리고 perror(argv[0])가 실행되는데 argv[0]는 현재 프로그램 이름인 ./a.out 을 말한다. 그리고 이 함수 안에서 에러메세지를 확인하기 위해 errno을 보면 ENOENT가 errno에 저장되어 있고 perror라는 함수 안에서 ENOENT는 "No such file or directory"라는 말과 맵핑되어 있어서 저렇게 출력된다.

 

 

unix System 에서는 사용자를 숫자로 구분한다.

User ID, Group ID.

 

string 형식의 id를 쓰지않고 숫자로 쓰는 이유?

숫자로 하는게 간단하기 때문에. 또한 str으로 하면 사용자 이름이 일치하는지 strcmp를 해야하는데 이게 부담스러워서 그렇다.

 

 

Signal

어떤 상태가 발생하면 process에게 알려주기 위해 signal이라는게 존재한다.

process는 signal을 받으면 다음과 같이 동작한다.

  1. signal을 무시
  2. default 액션을 취한다.
  3. 해당 signal에 맞는 액션을 취한다.(input에 따른 행동을 말하는 거같음. 마치 default함수, input이 있는 함수처럼)

kill 예제

kill 28616 : 28616이라는 프로세스에 kill을 요청함. 즉 signal이 전달됨.

이 때 반응은 +Terminated yes> ~ 이렇게 반응함.

28616이라는 process에서 default action을 취했다는 걸 알 수 있다.

 

Time

Calendar time.

Epoch라는 기준시가 있는데 Calendar time은 기준시로부터 얼마나 흘렀는지를 말한다.

Epoch : 1970년 1월 1일 00시

 

Process time

clock ticks을 의미. 크리스탈로 틱 재는거

 

clock time, user CPU time, system CPU time이라는게 존재.

time 이라는 명령어로 clock time, user CPU time, system CPU time을 알 수 있는데

real, user, sys가 각각 clock time, user cpu time system cpu time을 의미한다.

반응형