习惯使然,学习总想先了解一个的概念,和这个东西的历史,现在开始操作系统的概念和历史吧.
一,什么是操作系统:
1,操作系统是机器的扩展
这种观点认为操作系统是人机接口,硬件操作是复杂的,麻烦的。为了隐藏硬件操作的细节,如读写数据,移动磁头臂,格式化磁道,初始化,校准控制器等,建立了操作系统,来提供一个更简洁的交互页面,这个是从上往下的想法
2,操作系统是资源的管理者
操作系统是控制器,存储器鼠标,键盘,打印机等资源的管理者,在这个角度看,操作系统的任务是在相互竞争的曾许之间有序的控制对处理器,存贮器,io设备的分配
资源管理中一个重要的概念是复用:
一种是共享复用 :如cpu轮讯
一种是空间复用 :如内存分割
二,操作系统的历史:
对于操作系统的历史简单的看了一下,这里不想写其中的故事,虽然很多看了感觉很有趣,体会到那个时代的人对计算机的感情,但做为一个技术者,这里还是简单的说一下吧:
1,无操作系统 --------------真空管和插件板计算机
2,批处理操作系统-----------晶体管计算机(初期的大型机(mainframe))
3,多道程序操作系统---------集成电路(OS/360,MuLTICS)
4,PC --------- -----------大规模集成电路
操作系统的大概先后顺序
OS360-->MULTICS-->Unix-->Minix-->linux
Dos-->Windows
三,操作系统分类:
1,大型机操作系统
2,服务器操作系统
3,多处理机操作系统
4,个人计算机操作系统
5,实时操作系统
6,嵌入式操作系统
7,只能卡操作系统
四,个体重复发展概念
每个东西的发展都是经历了同样的过程
大型机开始没有硬件保护
小型机开始也没有硬件保护
pc开始也是如此
拥有着相同的历程
五,计算机的构成:
1,处理器
2,存储器
3,IO设备
4,总线
六,操作系统中的重要概念:
1,进程
2,死锁
3,存储管理
4,输入,输出
5,文件
6,安全
7,Shell
七,概念重用原理
很多概念都会因为技术的改变而改变
比如开始的解释执行的程序--->为了速度编程编译执行的程序--->java的出现变回解释执行的程序(或者说各自一半的混合体)
八,系统调用:
1,进程管理
pid=fork() 创建与父进程相同的子进程
pid=waitpid(pid,&statloc,options)等待一个子进程中止
s=execve(name,argv,environp)替换一个进程的核心映象
exit(status)中止进程的执行
2,文件管理
fd=open(file,how,...)打开一个文件
s=close(fd)关闭一个文件
n=read(fd,buffer,nbytes) 把数据从一个文件读到缓存
n=write(fd,buffer,nbytes)把数据从缓存写道一个文件
position=iseek(fd,offset,whence)移动文件指针
s=stat(name,&buf)取得文件的状态信息
3,目录文件系统
s=mkdir(name,mode) 见目录
s=rmdir(name) 删目录
s=link(name1,name2) 链接
s=ulink(name) 取消连接
s=mount(special,name,flag)安装
s=umount(special)卸载
杂项
s=chdir(dirname)改变工作目录
s=chmod(name,mode)修改一个文件的保护位
s=kill(pid,signal)发一个信号给进程
seconds=time(&seconds) 从1970,1,1起的时间
windows有一套类似的系统