- Booting : 컴퓨터가 처음에 power on을 하거나 reset을 했을 때 처음 시작되는 프로그램.
bootstraper -> Boot Block(disk에 있음) -> OS
이 과정의 마지막에서 /etc/init(pid=1을 생성하는 process) 이 불려옴 ->다른 process는 전부 init의 fork()
-init process : 시스템 초기화를 함. 처음에는 single user mode로 수행.
shell program fork, stdio descriptor, system console terminal 생성. (하는 일이 많구만)
-multi user operation
이 과정에서 일어나는 자세한 일 : shell을 만든다->/etc/rc에 있는 interpret하여 수행시킴
/etc/rc : 시스템 초기화에서 수행해야 하는 일이 있음
+파일 시스템 체크, cron, syslog 데몬 생성, /etc/mtab file 작업 가능
terminal device에 관련된 cofiguration file(/etc/tty)을 읽어서 한 entry마다 사용자 접속을 감지할 수 있는 프로그램(/etc/getty) 생성
init이 불려올 때의 위 과정들을 정리하자면 다음 그림과 같다.
login과 /etc/passwd(shadow) System Data File
-passwd
passwd 파일에 있는 예시를 가져와서 각 요소가 뭘 의미하는지 살펴보자. 분리자는 :이다.
예시만 보면 답답하니까, 직접 shell 창을 켜서 찾아보자 passwd는 /etc에 있다.
cat passwd를 하면 목록이 쭉 뜬다. root를 일단 살펴보자.
user name : encrypted password : numerical user id : numerical group id : comment field : initial working directory(home directory) : initial shell(user program, 사용하는 shell.)
의 순서대로 이루어져 있다. (볼 수 있는 세상이 넓어졌다!)
-passwd 관련 system call
[간단상식 ] get - return / set - write
struct passwd *getpwuid(uid_t uid)
uid를 통해 passwd를 얻겠다!
struct passwd *getpwname(const char *name)
name을 통해 passwd를 얻겠다!
passwd struct는 다음과 같은 요소들이 들어있다 ...
– char *pw_name
– char *pw_passwd
–uid_tpw_uid
–gid_tpw_gid
– char *pw_gecos
– char *pw_dir
– char *pw_shell
-home directory(~)
시작했을 때, 사용자마다 home directory에 login 정보가 들어있는 system data file이 있다.
+login
/bin/sh
~/.profile : (.login + .cshrc)
/bin/csh
~/.login : set terminal type, environment vars(fork, exec 할 때 e 변수에 관련된 것)
~/.cshrc : set command alias, path, umask(access control에 해당. umask에서 masking 되어있으면 해당하는 access permission이 protection함. default mask값 설정)
+logout
/bin/csh
~/.logout :logout할 때 해야 하는 동작들.
networking과 여러 가지 file
-Login Procedure(로그인 과정)
+terminal login
+network login
우리는 알고 있다. 이 그림들을 다시 자세히 보게 될 것이라는 것을 ... 그냥 통짜로 정리해보자.
-/etc/hosts, /etc/services, /etc/protocols
+/etc/hosts : 각 host에 대한 정보. ip주소, hostname가 기록되어 있는 system daa file
+/etc/service : IP + port(service, 프로세스 관련)
+/etc/protocol : transport layer에서 어떤 protocol을 사용하는지 (TCP, UDP)
windows 쓰면 window media player 깔아서 우클릭>고급기능>재생속도설정> 2배속(추천), 4배속 해도 될듯.
UNIX 발전 과정
(이름은 발전 과정이지만 뭔가 내용물이 다르다. 필요성에 가깝다.)
- UNIX 기반 시스템
UNIX는 서버용 OS, 모바일 OS의 기반이 되었다.
- UNIX의 필요성
Engineer : workstation/server toolbox의 기본 운영체제이며, building block, newtwork s/w에서 UNIX를 사용하기 때문.
Student : 좋은 선생님이다. (내가 이렇게 쓴거 아니고 진짜 이렇게 적혀있었음) >linux가 free software라 그렇습니다.
UNIX의 주요 특징
(및 커널)
- Time sharing : 많은 프로그램을 CPU가 쪼개서.
- Conversational System : 사용자 iterrative? 하게. (대충 여러 사용자가 이용 가능하다는 뜻인 듯.)
Shell : command interpreter
File (UNIX는 file type OS) (regular, directory, special)
Process: HDD에 있는 program(file)을 main memory로 loading하여 실행시킨 것
-System Call
파일, 프로세스를 쉽게 관리하는 기능을 제공하는 인터페이스(API)
Block DIagram of the Kernel
(Kernel: 운영체제에서 주요한 기능을 하는 부분)
1. Shell : (not kernel!! JUST OS) 사용자가 입력한 command(명령어)를 해석해주는 것. 여러 종류 있음.
장점 : redirection 가능(standard in/out의 방향을 바꿈)
2. File : hierarchical.
파일 포맷, byte stream, write용 API 포함.
특) I/O device도 파일로 취급당함 ->file type OS
protection mechanism - 보안 관점(owner, group, others, rwx)
UNIX 구조
위에서 이야기 한 친구들의 전체 모양을 그리자면 이런 모양입니다.
그래서, UNIX Kernel Architecture를 Block Diagram으로 그리자면 다음과 같다.
(각각의 구성 요소가 HDD인지 memory인지 헷갈린다. 컴퓨터 구조를 더 열심히 들었어야 했다.)
System Call (and library)
kernel에서 제공하는 함수를 user process에서 사용할 때는, system call을 통해 이용한다.
! 이 때, library라는 것이 있다. library가 function을 따로 제공하여 직접 system call을 사용하지 않고도 kernel에서 제공하는 함수를 쓸 수 있다(그림 1.1 화살표 참고). library는 user process. ex)C library func.
System Call에 대한 내용을 조금 더 자세히 살펴봅시다. (다음 주까지 System Call 구경하더라.)