开始操作系统

习惯使然,学习总想先了解一个的概念,和这个东西的历史,现在开始操作系统的概念和历史吧.
一,什么是操作系统:
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有一套类似的系统 

实验一 进程调度 编写并调试一个模拟的进程调度程序,采用“短进程优先”调度算法对五个进程进行调度。以加深对进程的概念及进程调度算法的理解. 下面是采用动态优先数的调度程序,可作参考。  例题: 设计一个有 N个进程共行的进程调度程序。   进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。   每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。   进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。   进程的运行时间以时间片为单位进行计算。   每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。   就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。   如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。   每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。实验二 作业调度 一、实验目的:用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。 二、实验内容: 1.写并调试一个单道处理系统的作业等待模拟程序。 2.作业等待算法:分别采用先来先服务(FCFS)、响应比高者优先(HRN)的调度算法。 3.由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU时限等因素。 4.每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。 5.对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。 三、思考:比较各种算法的优缺点。 实验三 动态分区分配方式的模拟 1、实验目的:了解动态分区分配方式中的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解 2、实验内容: (1)用C语言分别实现采用首次适应算法和最佳适应算法的动态分区分配过程和回收过程。其中,空闲分区通过空闲分区链(表)来管理;在进行内存分配时,系统优先使用空闲区低端的空间。 (2)假设初始状态下,可用的内存空间为640KB,并有下列的请求序列: •作业1申请130KB •作业2申请60KB •作业3申请100KB •作业2释放60KB •作业4申请200KB •作业3释放100KB •作业1释放130KB •作业5申请140KB •作业6申请60KB •作业7申请50KB •作业8申请60KB 请分别采用首次适应算法和最佳适应算法进行内存的分配和回收,要求每次分配和回收后显示出空闲内存分区链的情况。 3、思考:讨论各种分配算法的特点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值