ݺߣ

ݺߣShare a Scribd company logo
[UNIX V6? ??? ??? ??? ??]
chapter1. UNIX V6 / chapter2. ????
???
yeswldms@gmail.com
??
UNIX V6 :
UNIX V6? ??? ??? ??? ??
???? ???? ??
??? ??(IAMROOT OB?^^)
?????
???? ?
? 1975?? ? ????? ??? Sixth Edition Unix(?? UNIX V6)? ?? ??
? ???? ??
??(Kernel) C OS? ??, ??? ???? ???? ? /? ??? ??? ??
?????(shell program) C ??? ??? ???? ???? SW
OS? ????? ??????, ????????? ??
- ??? ???? ? ???? ??
- ???? ? ????
- ??? ???? ???? ??? ?? ? ?? ??? ? ??
- ? ?? ?? ???? ??? ? ??
? ? UNIX V6? ??? ????
- ? 10,000? ??(??? ?? ??? ????? ? 1,000?)
- ??? ??, Lions Commentary on UNIX V6 Edition with Source Code(PDP-11/40? ???? ??? ????
??? ?? ??? ????? ???? ? ??)
- PDP-11?? ???? ?? ??? ??? ?? ?
- OS? ?? ???? ??, ??? ???? ???
- ???? ?? ?? ??
- ?? ???? ??? ??
- ?????, ?? ????? ??????? simh?????? ??? PDP-11??? ???? UNIX V6fmf ?
??? ? ??
- ??? ???,.. Pre K&R
???? ?
? ?? ??
#2~4? ????? ???? ???? ????
2 ???? ??
3 ???? ????
4 ?????
# 5,6? ???? ??
5 ????? CPU???? ???
?????? ? ??? ?
6 ???? ?? ? ????? ???
# 7,8? ??? I/O??
7 ??????
8 ?? ???? ????
# 9,10? ?????
9 ?????? ????
10 ?????? ??? ??
# 11? ???? ? ??? ??? ???
# 12? ??????? ?? ???
# 13? ???
# 14? ??? ?? ?? ??
? Kernel?
?????
Kernel
???????
?? ???
??????
???????
?????
?? ?? ???
CPU
???
???? ????
???? ??
process
??
5?. ??? ?
5?.????
process
process
6? ???
2,3,4?
9,10,11?
7,8,12? 13?
???? ?
? ????
?? ??? ???? ?? ?? ???? ??
? ???? ??
???, ??, ??, ????, ??? ??
?? ??
? ???? ?? ??
?? ???, ??? ???? ???
???
???? ??, ?????? ??/??????? ??
Part 1. UNIX V6??
Chapter 1. UNIX V6? ?? ? ??
1.1 UNIX V6??
- Kenneth Lane Thompson? Dennis Mac Alistair Richie? ??
- 1975? ? ????? ??
- ??
1) ???? C??? ??
2) ???? ??? ????? ??????, ????? ? ??? ?? ???? ?? ??
3) ???? ???? ????? ???? ????? ??? ???? ?? ???
? ??, DES?? DPD11/40??? ?????? ???? ??? ??
1.2 UNIX ??
- ? ????? UNIX V6? ??
- 1979? Seventh Edition Unix(UNIX V7) ??
- 1978? ??? ???? UNIX V6? BSD ??
- ???? ??
: ??? ?? POSIX?? OS?? API ????
Chapter 1. UNIX V6? ?? ? ??
1.3 UNIX V6 ??
# ??? ??? ??
> ?????? ??? ?? ??
- ???? ??
- ??? ??
- ?? ???
- ??? ?? ????? ?? ?? I/O
- ????
- ??? ??
> ???? ???, CPU, DISK ?? ???? ????? ????? ???? ???? ??? ??? ? ??
> ??? ?(system call)? ???? ??? ??? ??
> ???? ??? ?? ??? ???? ??, ???? ??? ??
?????? ????
Kernel
?????,
??? ???? ?
??? ?
????? ?? ??,
??? ?? ?
 UNIX V6? ???? ?????
??? ?????? ?????
?? ???? ??? ??
Chapter 1. UNIX V6? ?? ? ??
1.4 UNIX V6? ????
1.4.1 PDP-11 ????
PDP-11 ???, Digital Equipment Corporation (DES) ??? ??? ????
? ??? PDP-11/40? ???? ?
? PDP-11/40
Chapter 1. UNIX V6? ?? ? ??
- 16bit ??, ???? ???? ?? 16bit ??? ??
? PDP-11/40? 1??? 16bit (word? ????? ????? ??? ??)
- ?? I/O??? ?? Unibus? ?/?? (Unibus? 18bit ???? ??)
- PDP-11/40? ????? ????? ????? ???? ??? 8KByte? ??
- ???? ?? ??? ? ????? ?? ?, ??? ? ???(Memory Mapped I/O)
- MMIO(Memory Mapped I/O)?????
: ???? ???? I/O??? ????, ? ??? ???? ?? ? ??? ???? ???? ???? ??
- UNIX V6? ? Unibus? ????
: ? ?? UNIX V6? ??? ?? ???? ? 4???? ??? 2bit?? ??? ????.. 16bit + 2bit(????
??????) = 18bit?? ??? ???? ???
PDP-11 Memory DISK Terminal
unibus
?DISK????? ??? 8KByte? ????? ??,
MMIO(Memory Mapped I/O)???? ?? ??? ?? I/O ?
???
8KByte
0 ????
Chapter 1. UNIX V6? ?? ? ??
1.4.2 PSW
- Process Status Word, ???? ?? ??
- 16bit ????
bit ??
15-14 ????(00:??, 11:???)
13-12 ????(00:??, 11:???)
7-5 ???? ????(7~0)
4 ?? ??(trap bit)
3 N. (negative), ??? ??? ??? ??? ??? ? ???
2 Z. (zero), ??? ??? ??
1 V. (overflow), ??? ??? ?? ?????? ???? ? ??
0 C. (Carry), ??? ??? ?? ??? ????? ??
?Trap bit : ???? ?? ?? ????? ???? ??????? ?? ??? ? ? ??? ?? ??? ??
????? ctrl+c ?? ??? ???? ??? ????? ??? ???? ???? ???? ????. ??? ??? ???? ?
? ??? ?????? ??? ? ? ?? ??? ?? ??? ??? ????. ?? Trap? ???? ?? ??? ??? ? ? ?
?? ??.. ????
* Carry vs OverFlow ??
Chapter 1. UNIX V6? ?? ? ??
1.4.3 ??????
- 8?? ?? ????, r0 ~ r7
- r6????(SP)? ?????, ????? ??
- PSW ????? ????(15-14)?? ??? r6(SP)? ????? ?? ???? ??? ??
1.4.4 MMU
- Memory Management Unit
- ???? ??? ?? ??? ??
- PDP-11/40? ???? 8KByte? ????? ??? ??? ??
- ???? ??? ??? ???? MMU?? ?? ??
- MMU? APR????? ??? ? ???? ?? ? ?? ????? ??????? ??
- MMU?? SR0, SR2?? 2?? ?? ????? ??
- .
Bit ??
r0, r1 ???, ??? ???
r2, r3, r4 ????
r5 ??????, ?????
r6(SP) ?????
r7(pc) ???? ???
Chapter 1. UNIX V6? ?? ? ??
1.4.4 MMU
- 
- MMU?? SR0, SR2?? 2?? ?? ????? ??
SR0, ??? ?? ??? ???? ????? ??, ?????? ??(SR0[15~13])
SR2 , ??? ????16?? ?? ????
Bit ??
15 ??? ?? ?? ???? ???? ??? 1
14 PDR? ???? ??? ???? ?? ??? ??? ??? 1
13 ?? ?? ??? ?? ?? ???, 1
8 ??????
6-5 ??? ???? ???? ??(??:00, ???:11)
3-1 ??? ??, ????? ???? ???? ????? ?? ?? ??
0 1? ?? MMU?? ??? ??? ???
Bit ??
15-0 ??? ???? ?? ????? ???
???? ????? ???? ?? ???? ??
SR0[15-13]? ?? ???? 1??, ?? ???? ?? ?? ????? ?
Chapter 1. UNIX V6? ?? ? ??
1.4.5 ???
- PDP-11/40? ???? ???? ??
- 8bit(1byte) ??? ????? ??.
- ???? 18bit? ???? ??? ??
- ??? 2^18 = 256KByte
- ?? 8KByte? ?? ??? ?? ???? ??? ??
- ????? ???? ??? ???? ???? ??
1.4.6 ?? ????
- ??? ???? ??? ??
- ??? swap???? ??
- ??? : ??? ??? ??? ?? ????? ???? ?? ??? ???? ????? ??? ???? ??
???, ???? ??? ???? ???? ??
1.4.7 ?? ???
- ??? ??? ???? ??
1.4.8 ???
- ???? ???? ???? ??. ???
Chapter 1. UNIX V6? ?? ? ??
1.5 ????
- UNIX V6? ?? BSD ????
- ????? ?? ? ??
1.6 ???
- UNIX V6? UNIX Programmers Manual(UPM)??? ??? ???? ??
- 9?? ??? ??
- ??? ???? 2?, 4?? ??
- ?? ????? ??(a.out) ??? ???? 5?? ??
- ??? ??? ??? ????? ??? 1,3,5,8?? ??
Chapter 2. ????
2.1 ????? ??
2.1.1 ??????
- ?? ????? ???? ??? ??? ????? ?????? ?
- ??? ??
1) ???? ??
2) ?????? ????? ???? ??
3) ????? ? ????????? ??
4) MMU?? ??????? ??????? ??
# ???? ID
- ??? ???? ID? ??
- ? ????? ???? ?????? ??? ????
Chapter 2. ????
2.1.2 ???? ????
: UNIX V6? ???? ??? ??
# TSS, Time Sharing System
- ??CPU? 1?.. ?, ???? ????? ???? ?? ????? ? ??
? ?? ?? ????? ??
- ?? CPU? ? ?? ????? ??
- ?? ????? ??? ????? ??? ????, ???? ????? ??? ???? ??? ??? ?
??
???? 1 ???? 2 ???? 3
?? ????
Chapter 2. ????
2.1.3 ???? ??
- ??? ?? ??? ??? ?? ???? ? ? ?? ?? ????? ??
2.1.4 ??? ??? ?? ??
# ???? ??
- ??? ???, MMU?? ?? ????? ???? ??? ??? ??
- PSW(Process Status Word)? ???? ??
?? ??
?????? ?? ????? ?? ??? ??? ???? ????
???? - CPU??? ???? ??? ???
- ?? ???? ??? ???? ???
- ??? ?? ???? ?? ????
?? ?? ???? ??, ????
????? ??? ??, ??? ????
???? ?? ??, ?? ????
Chapter 2. ????
# ??? ?
- ?? ??? ???? ??? ??? ?? ???? ??? ?? ??? ?? ? ?? ??
- ??? ? ?? ?, ????? ??
- ?? ?? ?? ?, ??? ??? ??
- ??? ?? ?? ?? ??
: fubyte(), fuibyte(), fuword(), fuiword(), subyte(), suibyte(), suword(), suiword() ?? ??
(u :user, s :store, f: fatch, i :interupt)
# ?? ??
- ??? ??? ????
- ?? ??? ????? ??? ?? ???? ?????
??? ?? ?? ??
?? ?? ????
?? ??? ??
??? ??? ????
Chapter 2. ????
2.1.5 ???
- ???? ???? ??? ? ??? ????? ??
2.2 Proc ???? User ???
- ? ???? ????? ????? ? ?? Proc ???? User ???? ??
- ???? ? ?? ? ?? ??
- Proc ??? : ???? ?? ??????
- User ??? : ??? ?? ??? ?
?? ??
Swap out ????? ??? ???? ?????,
??? ?? ??? ?? ????? ????? ?? ????? ????? ??? ????
??
Swap in ?????? ???? ?, ?? ??? ? ????? ?? ??? ???? ???? ??
Chapter 2. ????
2.2.1 Proc ???
- proc[]
- ? ???? ? ?? ????? ??
- ????? ??? ?? ?, ???? ??? ?? ?????? ??? ?? ? ???? ?? ??? ??(???
? ?? ??)
- proc[]? ??? ? : #define NOROC 50, ???? proc[]? ??? ??? ? ?? ????? ??? ??
?, proc ???
- Proc[]? ???? ????(50?? ???)????,
swap-out?? p_stat? ??? ???, ??? ????? swap-in?? ?? ??
?? ??
p_stat ??, NULL? ?? ???? PROC[]? ???? ??
p_flag ???
p_pri ????, ?? ???? ??
p_sig ??? ???
p_uid ??? ID
p_time ???? ??? ??? ??? ??
p_cpu CPU ????(tick)
p_nice ?? ????? ???? ?? ?? ?, ???? 0?? nice ??? ?? ???? ?? ??
p_ttyp ????? ??? ???
Chapter 2. ????
?, ???? ??
?, ???
?? ??
SSLEEP ??, ?? ????? ????? ????
SWAIT ??, ?? ????? 0???? ????
SRUN ???? ??
SIDL ???? ?? ?
SZOMB ?? ??
SSTOP ???? ??? ???
??? ??
SLOAD ???? ??(??? ???? ??)
SSYS ??? ?????, ??? ??? ??. UNIX V6?? procp[0]? ??
SLOCK ??? ???? ?? ??
SSWAP ??? ???? user.u_rsav[]? ?? ???
STRC ???? ?
SWTED ???? ??? ??
Chapter 2. ????
2.2.2 user ???
- user[]
- ????? ??? ???? ?? ???? ???? ????
- ?? ????? ??? user ?????? ???? ???? ?? ???,
????? ??????? user ???? ?? ??? ??
?, user ???
?? ??
u_procp ? user???? ??? proc[]???? ???
u_base ??? ?? ? ? ????? ?? ? ? ??
u_count ??? ?? ? ? ????? ?? ? ? ??
u_offset[] ??? ?? ? ? ????? ?? ? ? ??
u_cdir ?? ????? inode[] ???
u_dirp ??? ????, ?? ?? ?????? ???? ??? ??? ?? ? ??
u_pdir namei()? ???? ??, ????? ?? ????? ??
u_ar0 ??? ? ??? ??? ????? ??????? PSW ??? ? ? ??
Chapter 2. ????
2.2.2 user ???
?, ???? (u_error)
# ???? u
- ??? ???? u? ???? ?? ????? user ???? ??
- u? ???? ???? ?? ??? (? ??? ??)
u(conf/m40.s)
1 .globl _u
2 _u = 0140000
?? ??
EFAULT ??? ??? ?? ?? ??? ??? ??? ???? ? ?
EPERM ?? ??? ??
ENOENT ??? ??? ??
ESRCH ???? ?? ????? ??? ?? ???
EINTR ??? ? ?? ?? ??? ??? ??
EIO I/O ??
Chapter 2. ????
2.3 ????? ??? ??
- ??? ????? ??? ????? ??? ?????? ??? ? ?? ?? ??? ??? ??
- ?? ??? ??? ????? ?? ????? ??
2.3.1 ??? ????
- ????? ????
- ????
- ?? ????? ?? (??? ????? ??? ???? ???? ??)
- text[]? ??, ??? ????? ??? uer.u_tsize
Chapter 2. ????
2.3.2 ??? ????
- ????? ???? ???? ???? ??
- ?? ????? ?? ? ? ??, ????? ?? ????? ??? ??
- ??? ????? ?? ????: proc.p_addr, ?? : proc.p_size
- ??? ????? ??
?? ??
PPDA Per Process Data Area
User???? ?? ?????? ??
?? : USIZE x 64byte = 1KByte(??? ????? ??? ? ??)
?????? : ????? ?? ?????? ??. ?????? ??????? ????? ??
Data ?? ????? bss?? ?? ??? ???? ??? ????? ?? ??? ???? ???? ???
?? ??
? ?? ?? ? ??? ?? ??
? ??? ?? ????? ?? ??? ? ??? ??
?? : user.u_dsize
?? ?? ??? ????? ?? ????? ??? ???? ??
????? ???? ??
????? ?? ????? ??? ?????? ?? ??? ??
?? : user.u_ssize
Chapter 2. ????
# USIZE(param.h)
1 #define USIZE 16
??. ??? ????
user ???
?? ?? ?
?
??? ??
(?)
PPDA
?? ??
?? ???
USIZE
user_u.dsize
user_u.ssize
proc.p_size
proc.p_addr
Chapter 2. ????
2.3.3 ?? ???? ??
?????,
- 64KByte? ?? ???? ??? ??
- 16bit? ?? ???? ??? ??
- ??????? MMU?? 18bit ?? ????? ??? ?? ???? ??
?, ?? ???? ??? ?? ???? ??
- ??? ????(process? ???? ??)? ?? ???? ??? ??? ????(0x0)? ????
- ??? ??? ??? ?????? 8KByte ?? ????? ??
- ?? ??? ??? ???? (0xffff)? ??
?? ???? ??
?? ???? ?
?
16?? ?? ???? 64 KByte
?? ???? ?
?
18?? ?? ???? 256 KByte
Chapter 2. ????
2.3.3 ?? ???? ??
cf. ?????? ?????? ??.. ??? ?? ??? ??? ??? ?? ??? ???? ???, ?? ??? ?
?? ? ???? ?? UNIX V6??? ?? ??? ???? ???. ?? ???? ???? ? ?? ?? ???? ?
???.
- ?????? ??? ?? ???? ??? ??
- ??? ?????? ?????? ??? ????? ??? APR? ??(??? ??)
- ?????: ???????, ????: ??????
# ?????? ??
- ????? ??? ?????? ??? ? ??
- ??? ??? ??? ? ??
- ??? ??? ?? ? ??
0xffff
?? ???? ??
??? ???
?
user_u.tsize
?? ??
user_u.ssize
??? ??
user_u.dsize
0
u ???
????? ???
0 mod 8k
? ???
?
?? ???
?
??? ????
Chapter 2. ????
2.3.3 ?? ???? ??
??. ??????? ?????? ??
?? ???? ??
??? ????
0x3fff
PPDA
??? ??
PPDA
??? ??
?? ????
0
??? ????
??? ??
?? ??
??? ????
??? ??
?? ??
?? ????
0
0xffff
???? B?
?? ???? ??
???? A?
?? ???? ??
?? ????
0
0xffff
Chapter 2. ????
2.3.4 ???? ??
- MMU : ?? ????? ?? ????? ??
- MMU? ??? ?? ? ?? ????? ??(PAR, PDR)
- PAR(Page Address Register) + PDR(Page Description Register) = APR(Active Page Register)
- ? ??? ?????? APR?? user???? ??, ????? ???? user ???? ??? ??? APR?
? ??
?????
?
PAR PDR
APR
User ???
MMU?????
?
??. ????
??
bit ??
11~0 ??? ????(64byte ??)
bit ??
14~8 ??? ?? ?
6 ??? ??, ???? ???
3 ??? 1??, ? ?????? ??
???? ???? ??
2~1 ????
00 : ???? ???.
01: ????
11 : ????
?. PAR
?. PDR
Chapter 2. ????
# PDP-11/40
- 2?? APR? ??: ?????, ??? ???
- PSW? ?? ??? ??? APR? ??????? ????(???? ???? ???? ???? ? ??),
MMU? ?? ???? ??? ??
- APR? 0?? 7?? ? 8?? ??.
- ?? ????? ??? ??? ?????? APR? ????, ? ??? ????? ??? ?? ???? ??
? ??
- ? ??? ????? APR ?? user ???? ??
- ??? ????? ?? ????? ??, ??? ??????? APR ?? ???
PSW
15 14 13 0
??(00) ???(11)
APR1
APR0
APR2

APR7
APR1
APR0
APR2

APR7
??. APR? ??
Chapter 2. ????
- APR? 0?? 7?? 8?
- ????? ?? ???? ??? ???, ?? ???? ??? ??
- ??? APR? ? ???? ??
- PAR? ? ???? ???? ?? ????? ??? ???? ??
- PDR? ? ???? ??(64byte ??)?? ?? ?? ?? ?? ??
- ? ???? ?? 128??(8KByte)? ??
? ???( or ????) : ????? ?? ???? ??
? 1?? ????? ? 8?? APR? ?? ? ??(????8?, ?????8?)
? PDR? 128?? ???? ??? ?? ? ? ??.
Q. ???? ??? ??? APR? ???, ?? 8?? ????? ????????? ???? ??? ???? ? ?
????? APR? user ???? ???? ??, user???? proc???? ????, ? ?? 50?? ????? ?
? ? ? ??? ?? ??? ? ??? ??
Chapter 2. ????
??. ?? ???? ??
u (0140000(8))
?1100 0000 0000 0000(2)
- ?? ????? ?? 3?? [15~13]? ???(APR)? ????,
- ??? APR? PAR(11~0]??? ?? ????? ??? ?? ????(??? ?? No.)?? ??
- ?? ????? ??? ?? ?????? ??????? [12~6]??(?? ????? ?? No.)? ??? ??
???? ?? ????(???? No.) [17~6]??? ??
0
??? ?? No.
12 1115
??No. ?? ?? ???
15 13 12 6 5 0
PAR[0]~[7]
?? ????
?? ?? ????? ?? No.
17 6 5 0
?? ????
ADD
: 110(2)?6(10), ? PAR[6] : 00 0000: 0 0000 00
??????? [12~6]
PAR[11~0]
: ?? ????? ???
?? ???? ?
: ?? ????
?? ????[17~6]
?????? ?? ????
[17~6]??? ?????? ??
?? ????[5~0]??? ???
?? ???? [17~0]??? ??
Chapter 2. ????
??. u?? user ??? ???
- ??? ???? u(0140000)? ???? ?? ????? user ???? ?? ??
- ?? ????? ?? ????? 6?? PAR? ??? ????? ?? ????(proc.p_addr)? ??
- ?? ??? APR : ?? APR
- ??? ??? APR : ??? APR
- 0~n?? ??? APR : APRn
- ??? ??? ?? ????? ??(512byte)? ?????, ? ??? ??? ??? 64??? ??? ?? ?
? ?
?? APR
APR1
APR0
APR2
APR3
APR7
APR4
APR5
APR6
User ???
????
?????
?? ?????
??? ????
0x00000
0x3FFFF
?? ????
proc.p_addr (? ???
???? addr)
1100 0000 0000 0000
: u? ?????
6???? ??
? ???
?????.
???: 2015.05.05

More Related Content

20150502 unix v6? ??? ??? ??? ?? 1 ???

  • 1. [UNIX V6? ??? ??? ??? ??] chapter1. UNIX V6 / chapter2. ???? ??? yeswldms@gmail.com
  • 2. ?? UNIX V6 : UNIX V6? ??? ??? ??? ?? ???? ???? ?? ??? ??(IAMROOT OB?^^) ?????
  • 3. ???? ? ? 1975?? ? ????? ??? Sixth Edition Unix(?? UNIX V6)? ?? ?? ? ???? ?? ??(Kernel) C OS? ??, ??? ???? ???? ? /? ??? ??? ?? ?????(shell program) C ??? ??? ???? ???? SW OS? ????? ??????, ????????? ?? - ??? ???? ? ???? ?? - ???? ? ???? - ??? ???? ???? ??? ?? ? ?? ??? ? ?? - ? ?? ?? ???? ??? ? ?? ? ? UNIX V6? ??? ???? - ? 10,000? ??(??? ?? ??? ????? ? 1,000?) - ??? ??, Lions Commentary on UNIX V6 Edition with Source Code(PDP-11/40? ???? ??? ???? ??? ?? ??? ????? ???? ? ??) - PDP-11?? ???? ?? ??? ??? ?? ? - OS? ?? ???? ??, ??? ???? ??? - ???? ?? ?? ?? - ?? ???? ??? ?? - ?????, ?? ????? ??????? simh?????? ??? PDP-11??? ???? UNIX V6fmf ? ??? ? ?? - ??? ???,.. Pre K&R
  • 4. ???? ? ? ?? ?? #2~4? ????? ???? ???? ???? 2 ???? ?? 3 ???? ???? 4 ????? # 5,6? ???? ?? 5 ????? CPU???? ??? ?????? ? ??? ? 6 ???? ?? ? ????? ??? # 7,8? ??? I/O?? 7 ?????? 8 ?? ???? ???? # 9,10? ????? 9 ?????? ???? 10 ?????? ??? ?? # 11? ???? ? ??? ??? ??? # 12? ??????? ?? ??? # 13? ??? # 14? ??? ?? ?? ?? ? Kernel? ????? Kernel ??????? ?? ??? ?????? ??????? ????? ?? ?? ??? CPU ??? ???? ???? ???? ?? process ?? 5?. ??? ? 5?.???? process process 6? ??? 2,3,4? 9,10,11? 7,8,12? 13?
  • 5. ???? ? ? ???? ?? ??? ???? ?? ?? ???? ?? ? ???? ?? ???, ??, ??, ????, ??? ?? ?? ?? ? ???? ?? ?? ?? ???, ??? ???? ??? ??? ???? ??, ?????? ??/??????? ??
  • 7. Chapter 1. UNIX V6? ?? ? ?? 1.1 UNIX V6?? - Kenneth Lane Thompson? Dennis Mac Alistair Richie? ?? - 1975? ? ????? ?? - ?? 1) ???? C??? ?? 2) ???? ??? ????? ??????, ????? ? ??? ?? ???? ?? ?? 3) ???? ???? ????? ???? ????? ??? ???? ?? ??? ? ??, DES?? DPD11/40??? ?????? ???? ??? ?? 1.2 UNIX ?? - ? ????? UNIX V6? ?? - 1979? Seventh Edition Unix(UNIX V7) ?? - 1978? ??? ???? UNIX V6? BSD ?? - ???? ?? : ??? ?? POSIX?? OS?? API ????
  • 8. Chapter 1. UNIX V6? ?? ? ?? 1.3 UNIX V6 ?? # ??? ??? ?? > ?????? ??? ?? ?? - ???? ?? - ??? ?? - ?? ??? - ??? ?? ????? ?? ?? I/O - ???? - ??? ?? > ???? ???, CPU, DISK ?? ???? ????? ????? ???? ???? ??? ??? ? ?? > ??? ?(system call)? ???? ??? ??? ?? > ???? ??? ?? ??? ???? ??, ???? ??? ?? ?????? ???? Kernel ?????, ??? ???? ? ??? ? ????? ?? ??, ??? ?? ? UNIX V6? ???? ????? ??? ?????? ????? ?? ???? ??? ??
  • 9. Chapter 1. UNIX V6? ?? ? ?? 1.4 UNIX V6? ???? 1.4.1 PDP-11 ???? PDP-11 ???, Digital Equipment Corporation (DES) ??? ??? ???? ? ??? PDP-11/40? ???? ? ? PDP-11/40
  • 10. Chapter 1. UNIX V6? ?? ? ?? - 16bit ??, ???? ???? ?? 16bit ??? ?? ? PDP-11/40? 1??? 16bit (word? ????? ????? ??? ??) - ?? I/O??? ?? Unibus? ?/?? (Unibus? 18bit ???? ??) - PDP-11/40? ????? ????? ????? ???? ??? 8KByte? ?? - ???? ?? ??? ? ????? ?? ?, ??? ? ???(Memory Mapped I/O) - MMIO(Memory Mapped I/O)????? : ???? ???? I/O??? ????, ? ??? ???? ?? ? ??? ???? ???? ???? ?? - UNIX V6? ? Unibus? ???? : ? ?? UNIX V6? ??? ?? ???? ? 4???? ??? 2bit?? ??? ????.. 16bit + 2bit(???? ??????) = 18bit?? ??? ???? ??? PDP-11 Memory DISK Terminal unibus ?DISK????? ??? 8KByte? ????? ??, MMIO(Memory Mapped I/O)???? ?? ??? ?? I/O ? ??? 8KByte 0 ????
  • 11. Chapter 1. UNIX V6? ?? ? ?? 1.4.2 PSW - Process Status Word, ???? ?? ?? - 16bit ???? bit ?? 15-14 ????(00:??, 11:???) 13-12 ????(00:??, 11:???) 7-5 ???? ????(7~0) 4 ?? ??(trap bit) 3 N. (negative), ??? ??? ??? ??? ??? ? ??? 2 Z. (zero), ??? ??? ?? 1 V. (overflow), ??? ??? ?? ?????? ???? ? ?? 0 C. (Carry), ??? ??? ?? ??? ????? ?? ?Trap bit : ???? ?? ?? ????? ???? ??????? ?? ??? ? ? ??? ?? ??? ?? ????? ctrl+c ?? ??? ???? ??? ????? ??? ???? ???? ???? ????. ??? ??? ???? ? ? ??? ?????? ??? ? ? ?? ??? ?? ??? ??? ????. ?? Trap? ???? ?? ??? ??? ? ? ? ?? ??.. ???? * Carry vs OverFlow ??
  • 12. Chapter 1. UNIX V6? ?? ? ?? 1.4.3 ?????? - 8?? ?? ????, r0 ~ r7 - r6????(SP)? ?????, ????? ?? - PSW ????? ????(15-14)?? ??? r6(SP)? ????? ?? ???? ??? ?? 1.4.4 MMU - Memory Management Unit - ???? ??? ?? ??? ?? - PDP-11/40? ???? 8KByte? ????? ??? ??? ?? - ???? ??? ??? ???? MMU?? ?? ?? - MMU? APR????? ??? ? ???? ?? ? ?? ????? ??????? ?? - MMU?? SR0, SR2?? 2?? ?? ????? ?? - . Bit ?? r0, r1 ???, ??? ??? r2, r3, r4 ???? r5 ??????, ????? r6(SP) ????? r7(pc) ???? ???
  • 13. Chapter 1. UNIX V6? ?? ? ?? 1.4.4 MMU - - MMU?? SR0, SR2?? 2?? ?? ????? ?? SR0, ??? ?? ??? ???? ????? ??, ?????? ??(SR0[15~13]) SR2 , ??? ????16?? ?? ???? Bit ?? 15 ??? ?? ?? ???? ???? ??? 1 14 PDR? ???? ??? ???? ?? ??? ??? ??? 1 13 ?? ?? ??? ?? ?? ???, 1 8 ?????? 6-5 ??? ???? ???? ??(??:00, ???:11) 3-1 ??? ??, ????? ???? ???? ????? ?? ?? ?? 0 1? ?? MMU?? ??? ??? ??? Bit ?? 15-0 ??? ???? ?? ????? ??? ???? ????? ???? ?? ???? ?? SR0[15-13]? ?? ???? 1??, ?? ???? ?? ?? ????? ?
  • 14. Chapter 1. UNIX V6? ?? ? ?? 1.4.5 ??? - PDP-11/40? ???? ???? ?? - 8bit(1byte) ??? ????? ??. - ???? 18bit? ???? ??? ?? - ??? 2^18 = 256KByte - ?? 8KByte? ?? ??? ?? ???? ??? ?? - ????? ???? ??? ???? ???? ?? 1.4.6 ?? ???? - ??? ???? ??? ?? - ??? swap???? ?? - ??? : ??? ??? ??? ?? ????? ???? ?? ??? ???? ????? ??? ???? ?? ???, ???? ??? ???? ???? ?? 1.4.7 ?? ??? - ??? ??? ???? ?? 1.4.8 ??? - ???? ???? ???? ??. ???
  • 15. Chapter 1. UNIX V6? ?? ? ?? 1.5 ???? - UNIX V6? ?? BSD ???? - ????? ?? ? ?? 1.6 ??? - UNIX V6? UNIX Programmers Manual(UPM)??? ??? ???? ?? - 9?? ??? ?? - ??? ???? 2?, 4?? ?? - ?? ????? ??(a.out) ??? ???? 5?? ?? - ??? ??? ??? ????? ??? 1,3,5,8?? ??
  • 16. Chapter 2. ???? 2.1 ????? ?? 2.1.1 ?????? - ?? ????? ???? ??? ??? ????? ?????? ? - ??? ?? 1) ???? ?? 2) ?????? ????? ???? ?? 3) ????? ? ????????? ?? 4) MMU?? ??????? ??????? ?? # ???? ID - ??? ???? ID? ?? - ? ????? ???? ?????? ??? ????
  • 17. Chapter 2. ???? 2.1.2 ???? ???? : UNIX V6? ???? ??? ?? # TSS, Time Sharing System - ??CPU? 1?.. ?, ???? ????? ???? ?? ????? ? ?? ? ?? ?? ????? ?? - ?? CPU? ? ?? ????? ?? - ?? ????? ??? ????? ??? ????, ???? ????? ??? ???? ??? ??? ? ?? ???? 1 ???? 2 ???? 3 ?? ????
  • 18. Chapter 2. ???? 2.1.3 ???? ?? - ??? ?? ??? ??? ?? ???? ? ? ?? ?? ????? ?? 2.1.4 ??? ??? ?? ?? # ???? ?? - ??? ???, MMU?? ?? ????? ???? ??? ??? ?? - PSW(Process Status Word)? ???? ?? ?? ?? ?????? ?? ????? ?? ??? ??? ???? ???? ???? - CPU??? ???? ??? ??? - ?? ???? ??? ???? ??? - ??? ?? ???? ?? ???? ?? ?? ???? ??, ???? ????? ??? ??, ??? ???? ???? ?? ??, ?? ????
  • 19. Chapter 2. ???? # ??? ? - ?? ??? ???? ??? ??? ?? ???? ??? ?? ??? ?? ? ?? ?? - ??? ? ?? ?, ????? ?? - ?? ?? ?? ?, ??? ??? ?? - ??? ?? ?? ?? ?? : fubyte(), fuibyte(), fuword(), fuiword(), subyte(), suibyte(), suword(), suiword() ?? ?? (u :user, s :store, f: fatch, i :interupt) # ?? ?? - ??? ??? ???? - ?? ??? ????? ??? ?? ???? ????? ??? ?? ?? ?? ?? ?? ???? ?? ??? ?? ??? ??? ????
  • 20. Chapter 2. ???? 2.1.5 ??? - ???? ???? ??? ? ??? ????? ?? 2.2 Proc ???? User ??? - ? ???? ????? ????? ? ?? Proc ???? User ???? ?? - ???? ? ?? ? ?? ?? - Proc ??? : ???? ?? ?????? - User ??? : ??? ?? ??? ? ?? ?? Swap out ????? ??? ???? ?????, ??? ?? ??? ?? ????? ????? ?? ????? ????? ??? ???? ?? Swap in ?????? ???? ?, ?? ??? ? ????? ?? ??? ???? ???? ??
  • 21. Chapter 2. ???? 2.2.1 Proc ??? - proc[] - ? ???? ? ?? ????? ?? - ????? ??? ?? ?, ???? ??? ?? ?????? ??? ?? ? ???? ?? ??? ??(??? ? ?? ??) - proc[]? ??? ? : #define NOROC 50, ???? proc[]? ??? ??? ? ?? ????? ??? ?? ?, proc ??? - Proc[]? ???? ????(50?? ???)????, swap-out?? p_stat? ??? ???, ??? ????? swap-in?? ?? ?? ?? ?? p_stat ??, NULL? ?? ???? PROC[]? ???? ?? p_flag ??? p_pri ????, ?? ???? ?? p_sig ??? ??? p_uid ??? ID p_time ???? ??? ??? ??? ?? p_cpu CPU ????(tick) p_nice ?? ????? ???? ?? ?? ?, ???? 0?? nice ??? ?? ???? ?? ?? p_ttyp ????? ??? ???
  • 22. Chapter 2. ???? ?, ???? ?? ?, ??? ?? ?? SSLEEP ??, ?? ????? ????? ???? SWAIT ??, ?? ????? 0???? ???? SRUN ???? ?? SIDL ???? ?? ? SZOMB ?? ?? SSTOP ???? ??? ??? ??? ?? SLOAD ???? ??(??? ???? ??) SSYS ??? ?????, ??? ??? ??. UNIX V6?? procp[0]? ?? SLOCK ??? ???? ?? ?? SSWAP ??? ???? user.u_rsav[]? ?? ??? STRC ???? ? SWTED ???? ??? ??
  • 23. Chapter 2. ???? 2.2.2 user ??? - user[] - ????? ??? ???? ?? ???? ???? ???? - ?? ????? ??? user ?????? ???? ???? ?? ???, ????? ??????? user ???? ?? ??? ?? ?, user ??? ?? ?? u_procp ? user???? ??? proc[]???? ??? u_base ??? ?? ? ? ????? ?? ? ? ?? u_count ??? ?? ? ? ????? ?? ? ? ?? u_offset[] ??? ?? ? ? ????? ?? ? ? ?? u_cdir ?? ????? inode[] ??? u_dirp ??? ????, ?? ?? ?????? ???? ??? ??? ?? ? ?? u_pdir namei()? ???? ??, ????? ?? ????? ?? u_ar0 ??? ? ??? ??? ????? ??????? PSW ??? ? ? ??
  • 24. Chapter 2. ???? 2.2.2 user ??? ?, ???? (u_error) # ???? u - ??? ???? u? ???? ?? ????? user ???? ?? - u? ???? ???? ?? ??? (? ??? ??) u(conf/m40.s) 1 .globl _u 2 _u = 0140000 ?? ?? EFAULT ??? ??? ?? ?? ??? ??? ??? ???? ? ? EPERM ?? ??? ?? ENOENT ??? ??? ?? ESRCH ???? ?? ????? ??? ?? ??? EINTR ??? ? ?? ?? ??? ??? ?? EIO I/O ??
  • 25. Chapter 2. ???? 2.3 ????? ??? ?? - ??? ????? ??? ????? ??? ?????? ??? ? ?? ?? ??? ??? ?? - ?? ??? ??? ????? ?? ????? ?? 2.3.1 ??? ???? - ????? ???? - ???? - ?? ????? ?? (??? ????? ??? ???? ???? ??) - text[]? ??, ??? ????? ??? uer.u_tsize
  • 26. Chapter 2. ???? 2.3.2 ??? ???? - ????? ???? ???? ???? ?? - ?? ????? ?? ? ? ??, ????? ?? ????? ??? ?? - ??? ????? ?? ????: proc.p_addr, ?? : proc.p_size - ??? ????? ?? ?? ?? PPDA Per Process Data Area User???? ?? ?????? ?? ?? : USIZE x 64byte = 1KByte(??? ????? ??? ? ??) ?????? : ????? ?? ?????? ??. ?????? ??????? ????? ?? Data ?? ????? bss?? ?? ??? ???? ??? ????? ?? ??? ???? ???? ??? ?? ?? ? ?? ?? ? ??? ?? ?? ? ??? ?? ????? ?? ??? ? ??? ?? ?? : user.u_dsize ?? ?? ??? ????? ?? ????? ??? ???? ?? ????? ???? ?? ????? ?? ????? ??? ?????? ?? ??? ?? ?? : user.u_ssize
  • 27. Chapter 2. ???? # USIZE(param.h) 1 #define USIZE 16 ??. ??? ???? user ??? ?? ?? ? ? ??? ?? (?) PPDA ?? ?? ?? ??? USIZE user_u.dsize user_u.ssize proc.p_size proc.p_addr
  • 28. Chapter 2. ???? 2.3.3 ?? ???? ?? ?????, - 64KByte? ?? ???? ??? ?? - 16bit? ?? ???? ??? ?? - ??????? MMU?? 18bit ?? ????? ??? ?? ???? ?? ?, ?? ???? ??? ?? ???? ?? - ??? ????(process? ???? ??)? ?? ???? ??? ??? ????(0x0)? ???? - ??? ??? ??? ?????? 8KByte ?? ????? ?? - ?? ??? ??? ???? (0xffff)? ?? ?? ???? ?? ?? ???? ? ? 16?? ?? ???? 64 KByte ?? ???? ? ? 18?? ?? ???? 256 KByte
  • 29. Chapter 2. ???? 2.3.3 ?? ???? ?? cf. ?????? ?????? ??.. ??? ?? ??? ??? ??? ?? ??? ???? ???, ?? ??? ? ?? ? ???? ?? UNIX V6??? ?? ??? ???? ???. ?? ???? ???? ? ?? ?? ???? ? ???. - ?????? ??? ?? ???? ??? ?? - ??? ?????? ?????? ??? ????? ??? APR? ??(??? ??) - ?????: ???????, ????: ?????? # ?????? ?? - ????? ??? ?????? ??? ? ?? - ??? ??? ??? ? ?? - ??? ??? ?? ? ?? 0xffff ?? ???? ?? ??? ??? ? user_u.tsize ?? ?? user_u.ssize ??? ?? user_u.dsize 0 u ??? ????? ??? 0 mod 8k ? ??? ? ?? ??? ? ??? ????
  • 30. Chapter 2. ???? 2.3.3 ?? ???? ?? ??. ??????? ?????? ?? ?? ???? ?? ??? ???? 0x3fff PPDA ??? ?? PPDA ??? ?? ?? ???? 0 ??? ???? ??? ?? ?? ?? ??? ???? ??? ?? ?? ?? ?? ???? 0 0xffff ???? B? ?? ???? ?? ???? A? ?? ???? ?? ?? ???? 0 0xffff
  • 31. Chapter 2. ???? 2.3.4 ???? ?? - MMU : ?? ????? ?? ????? ?? - MMU? ??? ?? ? ?? ????? ??(PAR, PDR) - PAR(Page Address Register) + PDR(Page Description Register) = APR(Active Page Register) - ? ??? ?????? APR?? user???? ??, ????? ???? user ???? ??? ??? APR? ? ?? ????? ? PAR PDR APR User ??? MMU????? ? ??. ???? ?? bit ?? 11~0 ??? ????(64byte ??) bit ?? 14~8 ??? ?? ? 6 ??? ??, ???? ??? 3 ??? 1??, ? ?????? ?? ???? ???? ?? 2~1 ???? 00 : ???? ???. 01: ???? 11 : ???? ?. PAR ?. PDR
  • 32. Chapter 2. ???? # PDP-11/40 - 2?? APR? ??: ?????, ??? ??? - PSW? ?? ??? ??? APR? ??????? ????(???? ???? ???? ???? ? ??), MMU? ?? ???? ??? ?? - APR? 0?? 7?? ? 8?? ??. - ?? ????? ??? ??? ?????? APR? ????, ? ??? ????? ??? ?? ???? ?? ? ?? - ? ??? ????? APR ?? user ???? ?? - ??? ????? ?? ????? ??, ??? ??????? APR ?? ??? PSW 15 14 13 0 ??(00) ???(11) APR1 APR0 APR2 APR7 APR1 APR0 APR2 APR7 ??. APR? ??
  • 33. Chapter 2. ???? - APR? 0?? 7?? 8? - ????? ?? ???? ??? ???, ?? ???? ??? ?? - ??? APR? ? ???? ?? - PAR? ? ???? ???? ?? ????? ??? ???? ?? - PDR? ? ???? ??(64byte ??)?? ?? ?? ?? ?? ?? - ? ???? ?? 128??(8KByte)? ?? ? ???( or ????) : ????? ?? ???? ?? ? 1?? ????? ? 8?? APR? ?? ? ??(????8?, ?????8?) ? PDR? 128?? ???? ??? ?? ? ? ??. Q. ???? ??? ??? APR? ???, ?? 8?? ????? ????????? ???? ??? ???? ? ? ????? APR? user ???? ???? ??, user???? proc???? ????, ? ?? 50?? ????? ? ? ? ? ??? ?? ??? ? ??? ??
  • 34. Chapter 2. ???? ??. ?? ???? ?? u (0140000(8)) ?1100 0000 0000 0000(2) - ?? ????? ?? 3?? [15~13]? ???(APR)? ????, - ??? APR? PAR(11~0]??? ?? ????? ??? ?? ????(??? ?? No.)?? ?? - ?? ????? ??? ?? ?????? ??????? [12~6]??(?? ????? ?? No.)? ??? ?? ???? ?? ????(???? No.) [17~6]??? ?? 0 ??? ?? No. 12 1115 ??No. ?? ?? ??? 15 13 12 6 5 0 PAR[0]~[7] ?? ???? ?? ?? ????? ?? No. 17 6 5 0 ?? ???? ADD : 110(2)?6(10), ? PAR[6] : 00 0000: 0 0000 00 ??????? [12~6] PAR[11~0] : ?? ????? ??? ?? ???? ? : ?? ???? ?? ????[17~6] ?????? ?? ???? [17~6]??? ?????? ?? ?? ????[5~0]??? ??? ?? ???? [17~0]??? ??
  • 35. Chapter 2. ???? ??. u?? user ??? ??? - ??? ???? u(0140000)? ???? ?? ????? user ???? ?? ?? - ?? ????? ?? ????? 6?? PAR? ??? ????? ?? ????(proc.p_addr)? ?? - ?? ??? APR : ?? APR - ??? ??? APR : ??? APR - 0~n?? ??? APR : APRn - ??? ??? ?? ????? ??(512byte)? ?????, ? ??? ??? ??? 64??? ??? ?? ? ? ? ?? APR APR1 APR0 APR2 APR3 APR7 APR4 APR5 APR6 User ??? ???? ????? ?? ????? ??? ???? 0x00000 0x3FFFF ?? ???? proc.p_addr (? ??? ???? addr) 1100 0000 0000 0000 : u? ????? 6???? ?? ? ???