Title: Unix????????
1Unix????????
???
2Unix??
- 1965??ARPA????MIT???????????????????????????,???
???????????????????????MULTICS (MULTiplexed
Information and Computing Service )
- MULTICS?????
- ?????????????????????????
- ???????????????????????????????????
3Unix??
- MULTICS????????????,??????????????,1969?4????????,
????????????,MIT????,MULTICS????,???????(????????
????????)??MULTICS?????????????????(???????2000?10
?30?1708)
- MULTICS????????????????????,???????????UNIX???????
???
4Unix??
- ?????????Unix???
- 1969?,?????MULTICS?????,Ken Thompson?Dennis M.
Ritchie ???????DEC PDP-7?,???????MULTICS?????????
??? - ????????PDP-7?????,?????????????????????,?????????
????shell ????? - 1970?,??????,????????MULTICS??????UNIX
- 1973?,UNIX?C??????,??,UNIX???
- 1977?,Unix????????????PDP-7??
5Unix??
- UNIX???????????Unix?????????????????????????????.
- ??UNIX???????
- ??,??UNIX??C????,????????,UNIX???????????????PC???
??????????????? - ??,?????????,???????????
- ??,????????,??????????????????????????
6Unix???
Ken Thompson Dennis
Ritchie
7Unix???
8????
9?????????
10??
./copy pan.c haiwei.c vi copy.c
(Shell)
fork()
exec(vi)
????????????,???????,?????????????????????????
11??
./copy pan.c haiwei.c vi copy.c
(Shell)
fork()
exec(vi)
???????????????,???????,???????????????,??????
12??
./copy pan.c haiwei.c vi copy.c
(Shell)
fork()
exec(vi)
????????????????,namei(/usr/bin/vi)?????????
13??
./copy pan.c haiwei.c vi copy.c
(Shell)
fork()
exec(vi)
??????????????
14??
(Shell???)
???
???
??
copy.c
???
???
??
vi
15??
(Shell???)
???
???
??
???
???
??
copy.c
vi????
16??
vi-1????
U?-1
??
????
???I
???I
??I
? ? ?
???
???I
??I
???
??
???
???I
??I
???
??
vi-1
vi
???
???
??
U?
vi????
17??
./copy pan.c haiwei.c vi copy.c
(Shell)
fork()
exec(vi)
18??
./copy pan.c haiwei.c vi copy.c
?????
namei(copy.c)
pan.c
copy.c
???????
?
?
open()
19??
./copy pan.c haiwei.c vi copy.c
?????
namei(copy.c)
pan.c
copy.c
???????
?
?
open()
20??
./copy pan.c haiwei.c vi copy.c
?????
???
???? ????
pan.c
pan.c
Wei.c
Copy.c
hai.c
Pan.c
copy.c
?
?
vi
pan.c
copy.c
namei()
vi-1
pan.c
vi-2
21??
./copy pan.c haiwei.c vi copy.c
- include ltfcntl.hgt
- char buffer 1024
- int main(int argc, char argv)
-
- int fdold, fdnew, count
- fdoldopen(argv1, O_RDONLY)
- fdnewcreat(argv2, 0666)
- while((count read(fdold, buffer,
sizeof(buffer)))gt0) - write(fdnew, buffer, count)
22??
gcc o copy copy.c ./copy pan.c haiwei.c
- include ltfcntl.hgt
- char buffer 1024
- int main(int argc, char argv)
-
- int fdold, fdnew, count
- fdoldopen(argv1, O_RDONLY)
- fdnewcreat(argv2, 0666)
- while((count read(fdold, buffer,
sizeof(buffer)))gt0) - write(fdnew, buffer, count)
23??
24(No Transcript)
25? ?