windows、unix、linux进程管理的比较
附:一、概述
标准的UNIX操作系统是一个交互式分时系统,它提供了支持程序开发全过程的基础和环境,可以支持40个最终用户。UNIX系统是由at & amp;T)是由贝尔实验室的两位程序员在T)的带领下于1969 ~ 1970开发的。UNIX自问世以来一直很受欢迎。它运行在各种具有不同处理能力的机器上,从高端微型计算机到大型机。目前,UNIX不仅可以在DEC的PDP-11和VAX-11的各种型号上运行,还可以在IBM的370和3300系列计算机以及Amdahi的、Data General的和Hp的系列计算机上运行。近年来,几乎所有的16位计算机和32位微型计算机都在竞相移植UNIX。这种情况在操作系统发展史上极为罕见。随着UNIX的普及,C语言的书写系统也成为一种引人注目的语言,并得到了广泛的应用。
UNIX系统取得巨大成功,有其内在原因,也有客观因素。客观条件之一是在UNIX出现之前已经成功开发了很多操作系统,其中有成功的经验,也有失败的教训,UNIX的设计者经过深思熟虑做出了适当的取舍,使得UNIX站在了前人的肩膀上,取得了成功(MULTICS用了200人年才达到最初的目标,而UNIX只用了2人年);其次,因为当时人们需要一个使用方便、开发环境好、规模适中的系统,UNIX恰逢其时;第三,UNIX是在PDP-11系列计算机上开发的,这些计算机已经在国际上广泛使用,为UNIX的广泛部署创造了条件。当然,UNIX成功的关键在于其自身的性能和特点。
UNIX的主要特点是:短小精悍,简单有效,易于理解、扩展和移植。
UNIX的核心程序由大约10000行C语言代码和1000行汇编语言代码组成,分为44个可以独立编译汇编的文件,每个文件又分为若干个进程。这些文档可以分为以下三类:
⑴汇编语言文件:系统中只有两个文件是用汇编语言编写的,包括33个汇编子程序,以及与机器硬件直接相关的部分,如中断处理、系统启动等。为了提高效率,一些常用的基本程序也是用汇编语言编写的。
⑵C语言文件:* * * *有28个文件,包含了流程管理的主流程,可分为190个子程序。文件可以独立编译,由汇编程序连接汇编后执行。
⑶C语言全局变量文件:* * * * 14,包含结构的重要描述。这类文件不能独立编译,必须用C语言文件编译。
二、UNIX操作系统的主要特点
1.精致的内核和丰富的实用层
UNIX系统在结构上分为内核层和实用程序层。核心层很小,但实用层很丰富。核心层包括流程管理、存储管理、设备管理和文件系统。UNIX的核心层设计得非常简洁,其主要算法都是经过反复推敲精心设计的。因此,核心层只需要占用很小的存储空间,并且可以内存驻留,从而保证系统高效率的工作。
实用程序层是可以从核心层中分离出来的部分,它以核心外程序的形式出现,运行在用户环境中。这些核外软件包包含丰富的语言处理器。UNIX支持十几种常用编程语言的编译器和解释器,如C、APL、FORTRAN77、PASCAL、SNOBOL、COBOL、BASIC、ALGOL68及其编译器。还包括其他操作系统的常用实用程序,如编辑程序、调试程序、与系统状态监控和文件管理相关的实用程序等。UNIX也有一套强大的软件工具,用户可以很容易地使用它们来开发新软件。这些软件工具包括:用于处理文本文件的实用程序troff和源代码控制程序SCC。
s(源代码控制系统)、命令语言词法分析器和语法分析器生成器Lex(音乐分析器生成器)和YACC(Ye)。
Tanothercompiler)等等。此外,UNIX命令解释器Shel。
l也是核外项目。正是这些核外程序为用户提供了一个相当完整的编程环境。
UNIX的核心层为核心之外的程序提供了充分而强大的支持。核外程序基于内核,最终都使用内核层提供的底层服务,它们逐渐成为“UNIX系统”的一部分。核心层和实践层合二为一,为用户提供各种良好的服务。
2.使用灵活的命令编程语言外壳
Shell首先是一种命令语言。UNIX的200多个命令对应200个实用程序。Shell也是一种编程语言。它具有许多高级语言的控制流能力,如if、for、while、until、case语句,以及对字符串变量进行赋值、替换、替代参数和替换命令的能力。用户可以使用这些函数用Shell语言编写“Shell”程序,并保存在文件中。以后用户只需要输入相应的文件名就可以执行了。这种方法易于系统扩展。
3.分层文件系统
UNIX系统采用树形目录结构来组织各种文件和文件目录。这种组织有利于辅助存储空间的分配和快速的文件搜索,还可以为不同用户的文件提供文件共享和访问控制能力,保证用户之间安全有效的协作。
4.统一处理文件和设备
UNIX系统中的文件是非结构化的字节序列。默认情况下,文件是按顺序访问的,但如果需要,用户可以为文件构建自己的结构,并且用户还可以通过更改读/写指针来随机访问文件。
UNIX像对待文件一样对待外围设备,外围设备像磁盘上的普通文件一样被访问,* * *享受和保护。用户不必区分文件和设备,也不需要知道设备的物理特性就可以访问它们。比如系统中行式打印机对应的文件名是//dev/lp。用户可以通过写文件从打印机输出数据。这样,在用户面前,文件的概念简单,使用方便。
5.良好的便携性
所有的UNIX实用程序和90%的核心代码都是用C语言编写的,这使得UNIX成为一个可移植的操作系统。操作系统的可移植性带来了应用程序的可移植性,所以用户的应用程序可以用于小型机和其他微机或大型机。从而大大提高了用户的工作效率。
虽然UNIX系统取得了巨大的成功,但它也不是没有缺点。总结起来,对UNIX的批评如下:
1的版本太多了。UNIX系统,这使得应用程序的可移植性没有完全实现。
UNIX是用C语言写的,所以很容易修改和移植。UNIX还鼓励用户使用UNIX工具开发适合自己需求的环境,导致UNIX版本太多。为了解决这个问题,目前,AT & T已经与四家重要的微型计算机制造商(Inte
r、摩托罗拉、Zilog和国家半导体)合作制定统一的UNIX。
System V版本,这将对UNIX的标准化产生很大的影响。
2.UNIX系统缺乏实时控制、分布式处理和网络处理能力。
这个缺点也在不断改进。已经开发了基于UNIX的分布式系统和具有实时处理能力的系统,并且已经成功地开发了一些。
3.3的核心。UNIX系统是无序的模块结构。
UNIX系统90%的核心都是用C语言编写的,但是它的结构没有层次结构,所以非常复杂,很难修改和扩展。
UNIX系统的这些缺点与其成就相比是非常微小的,它的成功是辉煌的。
三、UNIX系统结构
UNIX操作系统采用以全局变量为中心的模块结构,所以系统结构比较复杂,主要表现在:模块之间的循环调用和文件之间的全局变量。
在结构上,UNIX可以分为核心层和外壳层。核心层分为最底层的带硬件接口的设备驱动、物理存储块管理和下层实现存储管理、文件管理、设备管理、进程管理等功能。内核的外层是系统调用,是UNIX内核的对外接口。最外层是用户和UNIX系统之间的接口,其他各种实用程序和用户程序也在这一层运行。
系统结构如图8.1所示。
1.壳
UNIX提供的用户界面是一种命令语言,叫做Shell,这种命令语言的解释器也叫做Shell。系统初始启动时,为每个用户建立一个Shell进程,每个Shell进程等待用户输入命令。最简单的命令形式是命令行,它由命令名和几个参数组成,用空格分隔。Shell在解释和执行命令时,首先区分命令名和参数,然后根据命令名找到对应的文件,将文件读入内存,根据给定的参数解释和执行。
命令的执行由fork系统调用完成,Shell进程调用。
k之后,fork创建Shell进程的子进程,让Shell进程等待。子进程解释并执行命令。当命令被执行时,子进程调用exit系统调用来完成终止子进程和释放父进程的工作。Shell进程释放后,会给出一个提示,允许用户输入下一个命令行。该命令的基本执行过程如图8.2所示。
UNIX的交互系统要求用户等待上一行命令的执行,在终端出现提示后再进入下一行命令行。由于有些命令执行时间较长,为了减少用户的等待时间,允许用户使用Shell命令语言编写程序来表示UNIX系统中一组命令的执行顺序,用命令语言编写的程序称为Shell程序。Shell程序存储在一个文件中,命令解释器在必要时执行Shell程序中的命令。
2.系统调用
系统调用是用户程序请求操作系统为其服务的唯一方式。在UNIX中,系统调用被称为程序员接口。UNIX规定用户程序用trap指令请求系统服务,UNIX内核中的中断陷阱程序根据陷阱类型转向相应的处理程序。陷阱指令的形式如下:
UNIX版本6 * * *有41个系统调用,可以分为以下三类:
①与进程管理相关的系统调用,如建立子进程、等待子进程、睡眠、发信号、修改数据段大小等。
②与文件管理相关的系统调用,如创建文件、连接文件、打开文件、关闭文件、读取文件、写入文件、修改当前目录、修改文件属性等。
③其他系统调用,如取当前用户号、取日历时间、读取进程运行时间、更改优先级号等。
在系统调用中,有两种方法传递参数。第一种方式:在程序中,通过trap指令后继单元传递。这种方式分为直接方式和间接方式。在直接模式下,trap指令的后续单元最多允许放入5个参数;在间接模式下,trap指令的后续单元放一个参数区指针,这个参数区可以存放更多的参数。第二种方法是通过寄存器R0和R1传递参数。
UNIX系统程序员接口,包括大量的库子程序和标题文件。标题文件定义了系统调用中使用的复杂数据结构;库子程序和库函数为系统调用提供了额外的程序支持。
3.存储管理
UNIX系统最初是在PDP-11上开发的。PDP-11是分段存储器。在PDP-11中,一个段称为一个页面,每个页面可以包含若干个块,每个块64字节,主存以块为单位分配。
存储分配采用优先级自适应算法,利用空闲区表管理存储空间。每个表有50个条目,每个条目有2个单元,其中一个指向对应空闲区的起始块号,另一个指示空闲区的大小。表中项的顺序是按照自由区的地址从低到高排列的,如果有两个相邻的自由区,就合并成一个。表项内容为0,表示页脚。
由于PDP-11不支持虚拟内存,所以UNIX中内存用户区和磁盘交换区的分配和释放由存储管理模块管理。在交换程序的管理下,内存用户区和磁盘交换区合为一体,起着虚拟内存的作用。扫描PCB表进行交换进程,如果辅助中有就绪进程,检查内存中是否有空闲区,如果有空闲区,直接调入;否则,内存中的一些进程应该被换出。如果内存中没有可交换的进程,被交换的进程将处于等待状态,直到某些事件发生,并在唤醒后再次工作。当辅助存储器中有多个就绪进程时,根据FIFO将它们切换到存储器中;当内存中有多个进程可以换出时,选择可交换进程中优先级较低的进程进行换出。
当进程想要增加页面长度时,可以通过申请新页面,释放旧页面来实现。如果内存空间不够,就在辅助内存中申请新的一页,同时把整个过程改到辅助内存中。
什么是Linux?
1991年,芬兰Helexin的学生LinusTorvalds开发了一个类似Unix的运行在80386平台上的操作系统,命名为Linux,供自己使用和学习。为了让每个需要它的人都能方便使用,LinusTorvalds把它变成了“免费”软件。
由于互联网的快速发展,全世界的程序员都有了一种全新而有效的交流方式。也要感谢几年前RichardStallman主持的GNU项目。Linux在几年后成为一个完整的操作系统。它的能量被释放出来,变得非常可靠,每天都有新的改进加入。
为了让Linux好用,Linux也有很多发行版本,其实就是一套完整的程序组合。现在有许多不同的Linux发行版及其版本号。为避免混淆,我们先解释一些常用术语。
当我们谈到Linux时,我们一般指的是“RealLinux”,即内核,它是所有UNIX操作系统的“心脏”。但是linux本身不能成为一个可用的操作系统。还需要很多软件包,编译器,库文件,Xwindow系统等等。因为组合方式不一样,面向用户的对象不一样,这就是为什么会有很多不同的Linux发行版。
Linux的特性
Linux操作系统在短短几年内发展非常迅速,这与Linux的良好特性是分不开的。Linux包含了Unix的所有功能和特性。简单来说,Linux有以下主要特性:
1.公开
开放性意味着系统遵循世界标准,尤其是OSI国际标准。所有根据国际标准开发的硬件和软件都可以相互兼容,并且可以很容易地相互连接。
2.多用户
多用户是指系统资源可以被不同的用户拥有和使用,即每个用户对自己的资源(如文件和设备)都有特定的权限,互不影响。Linux和Unix都具有多用户的特点。
3.多任务处理
多任务处理是现代计算机最重要的特征。是指一台计算机同时执行多个程序,每个程序独立运行。Linux系统调度每个进程,平等地访问微处理器。由于CPU的处理速度非常快,因此,启动的应用程序似乎是并行运行的。实际上,处理器执行一个应用中的一组指令和Linux调度微处理器再次运行程序之间只有很短的时间延迟,所以用户感觉不到。
4.良好的用户界面
Linux为用户提供了两种界面:用户界面和系统调用。Linux的传统用户界面是基于文本的命令行界面,也就是shell,在一个文件上可以在线也可以离线使用。Shell具有很强的编程能力,用户可以很容易地用它来编程,从而为用户提供了一种更先进的扩展系统功能的手段。可编程Shell是指多个命令组合成一个Shell程序,可以独立运行,也可以与其他程序同时运行。
系统调用为用户提供了编程的接口。用户可以在编程时直接使用系统提供的系统调用命令。系统通过这个接口为用户程序提供低级高效的服务。Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施为用户呈现一个直观、易操作、交互式的友好图形界面。
5.设备独立性
设备独立性意味着操作系统将所有外部设备视为文件。只要安装了它们的驱动程序,任何用户都可以像操纵文件一样操纵和使用这些设备,而不知道它们的具体存在形式。
具有设备独立性的操作系统将每个外围设备视为一个独立的文件,从而简化了添加新设备的工作。当需要添加新设备时,系统管理员会在内核中添加必要的连接。这种连接(也称为设备驱动程序)确保每次调用设备提供服务时,内核都以相同的方式处理它们。当新的和更好的外设被开发并交付给用户时,操作允许它们在连接到内核后立即被无限制地访问。设备无关性的关键在于内核的适应性。其他操作系统只允许一定数量或种类的外部设备连接。独立于设备的操作系统可以容纳任何种类和任何数量的设备,因为每个设备都是通过其与内核的专用连接独立访问的。
Linux是一个设备独立的操作系统,其内核具有很强的适应性。随着更多的程序员加入Linux编程,更多的硬件设备将加入各种Linux内核和发行版。此外,由于用户可以免费获得Linux的内核源代码,因此用户可以修改内核源代码以适应新增加的外部设备。
6.提供了丰富的网络功能。
完善的内置网络是Linux的一大特色。Linux在通信和网络功能上优于其他操作系统。其他操作系统不具备与内核紧密结合的网络连接能力,也不具备内置这些网络功能的灵活性。Linux为用户提供了完善而强大的网络功能。
支持互联网是其网络功能之一。Linux免费提供大量支持互联网的软件。互联网在Unix领域建立并蓬勃发展。在这方面使用Linux相当方便,用户可以通过互联网与世界上的其他人交流。
文件传输是它的第二个网络功能。用户可以通过一些Linux命令传输内部信息或文件。
远程访问是它的第三个网络功能。Linux不仅允许文件和程序的传输,还为系统管理员和技术人员提供了一个访问其他系统的窗口。通过这种远程访问功能,技术人员可以有效地为多个系统提供服务,即使这些系统位于很远的地方。
7.可靠的系统安全性
Linux采取了许多安全技术措施,包括读写访问控制、带保护的子系统、审计跟踪、核心授权等。,为网络多用户环境中的用户提供必要的安全性。
8.良好的便携性
可移植性是指将一个操作系统从一个平台转移到另一个平台,以便它仍能以自己的方式运行的能力。
Linux是一个可移植的操作系统,可以运行在从微机到大型机的任何环境和任何平台上。可移植性为运行Linux的不同计算机平台提供了一种方法,使它们能够准确有效地与任何其他机器进行通信,而无需添加特殊且昂贵的通信接口。
为什么要用Linux?
Linux是“免费”的,上面有那么多“免费”软件。为什么不用呢?
Windows太不稳定,无法站立。换个平台。
我想学UNIX,但是钱包里没多少钱。先说Linux。
想学操作系统,开源OS在哪里?但也很积极,很有前途。
基于Linux的并行计算不仅成本低,而且功能强大,极具潜力。重要的是它有源代码。
如果你想成为一名黑客(当然是一种赛博人),Linux当然是最好的工具之一。
Linux具有无限的潜在商业价值,性能好,稳定性好,取代商业操作系统是明智的选择。
Oracle,Infomix,sysbase,IBM都支持Linux,用它做数据库平台挺好的。厌倦了一次次购买许可证(奸商经常设置这样的陷阱),Linux遵循公共版权许可证(GPL)正合我意。
Linux太适合Internet/Intranet了,通过网络本身共同开发。网络时代为什么不用Linux?
采用Linux可以大大降低总拥有成本(TCO)。等待商业操作系统补丁的耐心是有限度的,不能忍受一直被商家牵着鼻子走。开源Linux至少可以给用户一些控制权。开源允许用户根据自己的需求添加或删除某些功能,用户可以自定义。太棒了!
使用开源的Linux,还可以开发路由器、嵌入式系统、网络计算机、个人数字助理等等。GNU真的是一个巨大的知识宝库,为什么不用呢?
倡导自由软件的精神和梦想,贡献自己的力量!
参考资料:
网络世界
希望对你有用!