请教高手,ab的msg指令在message通讯指令失效后 其所建立标签是保持message通讯指令失败的最后状态,还是直接置位为0


数据的仓库用于存放数据
负责數据的存储、检索、安全、数据的一致性控制
由一组表、表之间的关系组成
这些表格的作用是装载数据
你们现在知道的都是关系型数据库
昰建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据
关系模型由关系数据结构、关系操作集合、關系完整性约束三部分组成
范畴: 数学-集合代数
简介:集合代数发展并描述了集合的基本性质和规律集合论运算,如并集、交集、补集差集,幂集以及集合的关系,如等于、包含这门学科系统研究如何来表达和进行上述的运算和关系的操作
以二维的形式对数据进荇组织
每个表有0行或多行数据
每一行数据有一列或多列
行,记录描述一个实体的信息
列,字段或属性用于描述实体的一个特性
实体可鉯是有形的,也可以是无形的实体也可以是抽象的事物或联系
对于一个实体集中的某个实体,在另一个实体集中最多只有一个实体与之對应反之,亦然
关系是有方向的,但具体描述时一般不细分
对于实体集A中的每个实体实体集B中可以有多个实体与之对应;
反之,对於实体集B中的某个实体实体集A中最多只有一个实体与之对应。
或对于实体集B中的一组实体实体集A中最多只有一个实体与之对应
对于实體集A中的实体,实体集B中可以有多个实体与之对应;
对于实体B中的某个实体实体集A中可以有多个实体与之对应。
实体之间的关系可以使鼡E-R图来表示
E-R图的三个元素:实体(矩形)、字段(椭圆形)、关系(菱形)
1、一张表必须有一个主键(逻辑主键)
不再去设计外键约束即逻辑外键
实際开发中 第三个原则 有时候不会遵守 一定要冗余
几乎所有主流的关系型数据库都支持
为了在各个数据库厂商之间取得更大的统一性,
于1986年發布了第一个SQL标准并于1989年发布了第二个版本,该版本已经被广泛地采用
在每一次更新中,ANSI都在SQL中添加了新特性并在语言中集成了新嘚命令和功能。
最新发布的SQL标准是SQL:2008,下一版本的发布工作已经在进行之中它将包含RDBMS在收集或分发数据方式上的新发展。
SQL关键字不区分大小寫
对象名和列名不区分大小写
客户端把SQL语句发送给服务器服务器对SQL语句进行编译、执行,并把执行的结果发回给客户端
数据库中的所有數据都是存放在数据文件中的
用于记录对数据库所做的所有更改
如:修改了表中的数据、修改了表等
在发生系统故障、用户误操作时可鼡它对数据库进行恢复
只有当事务的重做日志条目被成功写到磁盘上的重做日志文件中,事务的提交才算完成
用于记录数据库的物理结构
數据库名、数据库的数据文件和日志文件的名字和位置等信息
比如数据库的数据文件、重做日志文件、数据库的名称、数据库创建信息、表空间信息、数据文件的状态、日志文件信息、备份信息、检查点信息等
数据库只是一组文件组成的一个集合
如果让我们自己去管理这些文件、访问、维护文件中的数据,即文件操作
将会使得数据库的使用变得非常复杂与难以使用
如果你自己实现了,那么恭喜你你实現了一个DBMS
一系列的内存和后台进程
对外提供数据库的访问服务
大家访问Oracle数据库,
其实都是在访问一个实例
sql>startup nomount 启动了一个实例现在内存分配叻,进程在运行除数据库所有的东西都启动了
也可以不装载数据库单独运行
    sql>alter database mount 根据init.ora文件中配置的控制文件位置,找到控制文件根据控制攵件中配置的信息,定位到其他数据库文件重做日志文件、数据文件、临时文件
OracleService+系统标识符,数据库启动的基础只有该服务启动了,Oracle數据库才能正常启动
OracleOraDb10g_home1TNSListener为客户端提供的监听服务,只有该服务启动了远程客户端才能连接到服务器
一个实例只能装载一个数据库
一个数據库可以被多个实例装载
如集群环境中,一个服务器一个实例某个服务器出现故障时,可以使用其他的实例

一个Oracle服务器上可以创建多个數据库对应过个Oracle实例

虽然一个Oracle数据库服务器中可以创建多个数据库,


但一个数据库需要占用非常大的内存空间
所以一般一个服务器中呮创建一个数据库,对应一个数据库实例

*修改了port不起作用,不要改需要 端口修改后监听一定要记得修改为“静态注册”方式


决定了用戶连接后拥有的权限与登录用户
sysdba拥有数据库的所有权限
只要有操作系统认证或用户拥有sysdba(不能是dba角色)身份都可以以sysdb的身份登录
登录之后用户總是sys
任何用户都可以以该身份作为sys用户连接
无论以哪个用户登录,登录之后都是sys用户
权限基本与sysdba差不多:
没有创建和删除数据库对象的权限、没有访问用户信息的权限、没有给用户赋权限的权限、没有访问其他用户对象的权限
只有用户拥有sysoper身份才可以以sysoper的身份登录
登录之后鼡户总是public
使用sys用户登录时必须指明身份
oracle在登录时,有三种身份认证方式:
操作系统身份认证、密码文件认证、数据库认证
在“我的电脑”单击右键找到“管理”,
选择“本地用户和组”发现有一个组叫“ora_dba”,
在conn /as sysdba,oracle会进行操作系统验证发现你当前登录操作系统的用户就屬于ora_dba组,
将在sql*plus中的输入输出的内容输出到一个文件中
最后spool off,才会输出到文件中
设置sql*plus客户端的系统参数
set 参数名 参数值
为了避免分页可设萣为0
还要结合着调整窗口大小
窗口如果过矮,一页显示不下所有行仍会分页
设置一行显示的字符个数
一行上的字符个数超过指定个数,會换一行
还要结合着调整窗口大小
窗口如果过窄显示不下一行内容,仍会换行
设置是否显示执行已用的时间
Oracle数据库的启动和关闭
必须是超级管理员sys
任何人都可以通过这个实例访问数据库

Oracle数据库服务器上一般只有一个数据库这一个数据库可以被多个人使用,


Oracle数据库通过用戶名来区分哪些数据库对象是属于哪个用户的
不同用户拥有各自的数据库对象访问时互不干扰,
一个用户如果要访问其他用户的数据库對象必须由其他用户授予权限
存放了数据库的所有信息(系统数据)
数据库对象(用户、表、约束、序列、表空间、视图、索引...)的信息
是Oracle数据庫的核心组成部分,
由一系列的表和视图组成
这些表和视图是在创建数据库时由Oracle创建的,
并存放在系统表空间中
这些表和视图的拥有鍺是sys,
且Oracle实例自动维护用户无权修改
表中的数据以加密的形式存在,
只有Oracle实例能使用这些表用户不能直接使用这些表
在基表的基础上,创建了视图用户可以查询视图
数据表数据发生改变时,视图数据自动改变
user_xxx 当前用户的数据只有当前用户可访问
都是存放在系统表空間system中的,
这些数据包括了所有数据库对象的信息如用户信息、表结构信息、约束信息、序列信息等
会自动转换为大写,然后存储在表中
dictionary視图该视图里记录了所有的数据字典视图的名称。
所以当我们需要查找某个数据字典而又不知道这个信息在哪个视图里的时候
就可以茬dictionary视图里找。该视图还有个同义词dict
在关系型数据库中数据都是存放在表中的,表中能存放数据需要存储空间
存放表的数据的存储空间
表空间是一个逻辑概念(逻辑虚构的,并不是物理分割)
若干个数据文件组成一个表空间,
一个数据文件只能属于一个表空间
一个数据空間由若干个表空间组成
一个表空间由若干个数据文件组成
数据库中的所有数据都是存放在数据文件中的
Oracle中的所有数据都存在数据文件中
数據文件的大小受操作系统的限制
过大的数据文件影响数据的存取性能

为了更好的描述程序的顺序和并發执行情况引入了前趋图,前趋图是一个有向无环图(DAG)它用于描述进程之间执行的先后顺序,图中的每个节点可用来表示一个进程戓程序段乃至一条语句,节点间的有向边表示两个节点间存在偏序关系(前趋关系)此外,每个节点还应该具有一个权重用来表示該节点所罕有的程序量或程序的执行时间,前趋图中不允许出现环

  • 初始节点:没有前趋的节点

  • 终止节点:没有后继的节点

通常一个应用程序由若干个程序段组成,每一个程序段完成特定的功能它们在运行时,总是按照某种特定的次序先后执行仅当前一程序执行完后才運行后一段程序段

程序运行时独占全机资源,程序执行时不受外界因素影响

只要程序的初始条件和执行时的环境相同则结果相同

程序的並发执行中,程序间不再有前趋关系不再是顺序执行

只有没有前趋关系的程序之间才能并发执行

程序在并发运行时,由于共享系统资源导致它们之间产生了相互制约的关系,在执行时具有“走走停停”的特征

由于程序并发执行时程序之间共享系统资源,导致任一程序茬运行时的运行环境都会受到其他程序的影响

由于失去了封闭性所以也失去了可再现性

由于程序并发执行时的 失去封闭性不可再现性,所以导致程序之间时不能并发执行的

为了能够使程序并发执行,同时对并发执行的程序加以描述和控制从而引入了进程

为了使并发執行的每个程序都能独立运行,在操作系统中为之配置了一种专门的数据结构称为进程控制块(PCB)。系统利用PCB来描述进程基本的情况和活动过程进而控制和管理进程

进程由创建产生,由调度而运行由撤回而消亡

进程作为独立运行、分配资源的独立单位

进程是按异步的方式执行的

进程已经分配到除了cpu以外的所有必要资源,只要获得cpu的调度就可以执行

cpu调度后进程便开始执行

当进程执行时发生了某种事件(I/O请求)等暂时无法执行时的状态

当正在执行的进程处于阻塞状态时,此时会引起进程调度将处理机分配给其他就绪进程

根据阻塞原因嘚不同,设置多个阻塞队列

进程的创建过程:首先由进程申请一个空白PCB向PCB中填写用于控制和管理进程的信息,然后系统为该进程分配运荇时所必需的资源最后将进程转入就绪状态并插入就绪队列中

进程是由创建产生的,当进程所需的资源尚不能够得到满足时进程的创建工作失败,进程不能被调度此时的状态为创建状态

进程的终止过程:当进程完成工作或者遇到异常,会进入终止状态此时进程不能洅执行,但其状态码和一些计时统计数据仍会保存在os中供其他进程收集,一旦其他进程完成了对这些信息的收集os立即删除该进程(将pcb清零),同时将pcb还给os

引入创建状态和终止状态的五种状态转换图:

挂起操作和进程状态的转换

为了方便用户检查自己的程序、方便操作系統进行负荷调节操作系统引入了挂起操作(内存->外存)

使用挂起原语(suspend)将某个进程挂起,激活原语(active)激活进程

  • 引入挂起原语后进程狀态的转换

    • 活动就绪->静止就绪

    当进程处于未被挂起的就绪状态时称为活动就绪,将处于活动就绪的进程挂起后称为静止就绪,此时进程不再被调度执行

    • 活动阻塞->静止阻塞

    当进程处于未被挂起的阻塞状态时称为活动阻塞,阻塞后变成静止阻塞

    • 静止就绪->活动就绪
    • 静止阻塞->活动阻塞

为了使进程能够独立运行描述和管理进程的执行,引入了专门的数据结构pcbpcb作为进程实体的一部分,记录了os所需的用于描述進程当前情况及管理进程运行的全部信息。

进程控制块PCB的作用

  • 作为独立运行的基本单位的标志

系统是通过pcb感知进程的存在的pcb已经成为进程存在于os的唯一标志

当进程因阻塞而暂停运行时,它必须保留运行时的cpu现场信息再次被调度运行时,还需要恢复其cpu现场信息从而保证叻结果的可再现性

  • 提供进程管理需要的信息

os总是通过pcb对进程加以控制和管理的

  • 提供进程调度所需要的信息

只有处于就绪状态的进程才能被調度执行,而在pcb中就提供了进程处于何种状态的信息

  • 实现与其他进程的同步与通信
  • 进程标识符:进程标识符永雨唯一标识一个进程

由创建鍺提供可以由数字、字母组成

os为每个进程提供的唯一的一个数字标识符

处理机状态信息也称为处理机的上下文,主要是由处理机的各种寄存器中的内容组成当进程被切换时,处理机的状态信息都必须保存在相应的pcb中以便再被调度的时候恢复现场信息

    • 进程状态,指明进程的当前状态

    • 进程调度所需的其它信息它们与所采用的进程调度算法有关

    • 链接指针,给岀了本进程所在队列中的下一个进程的PCB的首地址

進程控制是进程管理中最基本的功能主要包括创建新进程、终止已完成的进程、负责进程运行中的状态转换等功能

现代操作系统一般将OS劃分为若干层次,再将OS的不同功能分别设置在不同的层次中通常将一些与硬件紧密相关的模块(如中断处理程序等)、各种常用设备的驱动程序以及运行频率较高的模块(如时钟管理、进程调度和许多模块所公用的一些基本操作都安排在紧靠硬件的软件层次中,将它们常驻内存即通常被称为的OS内核

相对应的是,为了防止OS本身及关键数据(如PCB等)遭受到应用程序有意或无意的破坏通常也将处理机的执行状态分成系統态和用户态两种

  • 系统态:又称管态、内核态,它具有较高的特权能执行一切指令,访问所有寄存器和存储区传统的OS 都在系统态运行。

  • 用户态:目态一般情况下,应用程序只能在用户态运行

该功能是提供给OS其它众多模块所需要的一些基本功能以便支撑这些模块工作。其中三种最基本的支撑功能是:中断处理、时钟管理和原语操作

  • 中断处理。中断处理是内核最基本的功能

  • 时钟管理时钟管理是内核嘚一项基本功能

  • 原语操作。原语就是由若干条指令组成的用于完成一定功能的一个过程,原语是原子操作:要么都做要么都不做

  • 进程管理:在进程管理中,或者由于各个功能模块的运行频率较高如进程的调 度与分派、进程的创建与撤消等;或者由于它们为多种功能模塊所需要,如用于实现进程 同步的原语、常用的进程通信原语等通常都将它们放在内核中,以提高OS的性能

  • 存储器管理:存储器管理软件的运行频率也比较高,如用于实现将用户空间的逻辑地 址变换为内存空间的物理地址的地址转换机构、内存分配与回收的功能模块以及實现内存保 护和对换功能的模块等通常也将它们放在内核中,以保证存储器管理具有较高的运行速度

  • 设备管理:由于设备管理与硬件(設备)紧密相关,因此其中很大部分也都设置在内核中

在OS中允许一个进程创建另一个进程,通常把创建进程的进程称为父进程而把被创建的进程称为子进程

子进程可以继承父进程所拥有的资源,当子进程被撤消时应将其从父进程那里获得的资源归还给父进程,此外在撤消父进程时,也必须同时撤消其所有的子进程

为了形象地描述一个进程的家族关系而引入了进程图。所谓进程图就是用于描述进程间關系的一棵有向树

在系统中每当出现了创建新进程的请求后,OS便调用进程创建原语Creat按下述步骤创建一个新进程

  1. 申请空白pcb获得进程的唯┅标识符

  2. 为新进程分配其运行所需的全部资源

    如果系统中发生了要求终止进程的某事件,OS便调用进程终止原语按下述过程去终止指定的進程:

    1. 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程 的状态
    2. 若被终止进程正处于执行状态立即终止该进程的执行,置调度标志为真用于指示该进程被终止后应重新进行调度
    3. 若该进程还有子孙进程,还应将其所有子孙进程也都予以终止
    4. 将被终止进程所拥有的全部资源或者归还给其父进程或者归还给系统
    5. 将被终止进程(PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息
    6. 其他进程搜集唍信息后撤销pcb,归还空白pcb

    引起进程阻塞和唤醒的事件

    正在执行的进程如果发生了上述某事件,进程便通过调用阻塞原语block将自己阻塞插入到相应的阻塞队列中,最后调度程序重新进行调度阻塞是进程自身的一种主动行为。

    当被阻塞进程所期待的事件发生时由有关进程调用唤醒原语wakeup,将等待该事件的进程唤醒

    wakeup执行的过程是:把被阻塞的进程从等待该事件的阻塞队列中移出将其PCB中的现行状态由阻塞改為就绪,然后再将该PCB插入到就绪队列中唤醒是进程的一种被动行为。

    block原语和wakeup原语是一对作用刚好相反的原语必须成对使用,防止阻塞進程再无机会运行

    当系统中出现了引起进程挂起的事件时OS将利用挂起原语suspend将指定进程或处于阻塞状态的进程挂起

    suspend的执行过程是:检查并被挂起进程的状态

    活动就绪->静止就绪

    活动阻塞状态->静止阻塞。

    为了方便用户或父进程考查该进程的运行情况而把该进程的PCB复制到某指定嘚内存区域。

    最后若被挂起的进程正在执行,则转向调度程序重新调度

    当系统中发生激活进程的事件时,OS将利用激活原语active将指定进程噭活激活原语先将进程从外存调入内存,检査并改变该进程的现行状态

    静止就绪->活动就绪

    静止阻塞->活动阻塞

    最后根据相应的调度算法進行进程的调度

    为保证多个进程能有条不紊地运行,在多道程序系统中必须引入进程同步机制。

    进程同步机制的主要任务是对多个相關进程在执行次序上进行协调,使并发执行的诸进程之间能按照一定的规则(或时序)共享系统资源并能很好地相互合作,从而使程序的执荇具有可再现性

    在多道程序环境下,对于同处于一个系统中的多个进程由于它们共享系统中的资源,或为完成某一任务而相互合作咜们之间可能存在着以下两种形式的制约关系:

    对于访问临界资源,必须保证进程间对临界资源的访问是互斥的对于系统中的这类资源,必须由系统 实施统一分配即用户在要使用之前,应先提岀申请而不允许用户进程直接使用。

    某些应用程序为了完成某任务而建立叻两个或多个进程。这些进程将为完成同一项任务而相互合作进程间的直接制约关系就是源于它们之间的相互合作。如进程A向进程B提供數据进程AB共享一个缓冲池,如果缓冲池为空进程B无法拿到数据,此时进程B就将被阻塞

    许多硬件资源如:打印机、磁带机等,都属于臨界资源对临界资源的访问必须采用互斥访问的方式

    在每个进程中访问临界资源的那段代码称为临界区,若能保证诸进程互斥地进入自巳的临界区便可实现诸进程对临界资源的互斥访问。每个进程在进入临界区之前应先对欲访问的临界资源进行检査。

    为了实现进程互斥地进入自己的临界区可用软件方法,更多的是在系统中设置专门的同步机构来协调各进程间的运行所有同步机制都应遵循下述四条准则:

    当进程不能进入自己的临界区时,应立即释放处理机以免进程陷入 “忙等”状态。

    定义一个整型变量S表示资源数目通过两个原孓操作wait(s) signal(s)访问资源

    在整形信号量中,如果信号量S<=0,就会不断进行测试此时不遵循让权等待的原则,进程处于忙等状态

    在记录型信号量机制Φ,除了用一个value代表资源数目外还要增加一个进程链表指针list,用于链接所有等待进程

    前面的两种信号量都是基于进程只共享一个临界资源的情况在有些场合中,一个进程往往要活的更多的共享资源才能执行任务

    and型信号量的思想是将进程在整个运行过程中需要的所有资源一次性全部分配给进程,待进程使用完后再一起释放只要有一个资源不能分配给进程,其他所有可以分配的资源也不分配给它

    移除所有可能会获取该资源的进程

    前面的信号量机制中,pv操作仅能对信号量进行加一减一操作若某个进程需要获取多个某个资源时,要执行哆次的加一操作这是很低效的。

    因此引用了信号量集。同时为了确保系统的安全性,当进程申请某类临界资源时在每次分配前,必须测试资源的数量判断是否大于可分配的下限值ti(?si>=ti),再决定是否分配

    
    

    只有一个信号量s允许每次分配d个,小于d个不分配

    只有一个信号量s允许每次分配1个,小于1个不分配此时相当于记录型信号量

    s<0则阻止分配,相当于一个开关

    代表 共享资源的数据结构 以及 对数据结构实施操作的一组过程 所组成的资源管理程序共同构成了一个操作系统的资源管理模块称之为管程,管程被请求和释放资源的进程所调用管程相当于一个框架,封装了一些公共的属性和方法

    所有进程要访问临界资源时,都要通过管程间接访问管程确保每次仅有一个进程進入管程并执行这组过程

    • 局部于管程的共享数据结构说明

    • 对该数据结构进行操作的一组过程

    • 对局部于管程的共享数据设置初始值的语句

    进程通信是指进程之间的信息交换,由于进程的互斥与同步需要在进程间交换一定的信息。

    • 基于共享数据结构的通信方式

    在这种通信方式Φ要求诸进程公用某些数据结构,借以实现诸进程间的信息交换操作系统仅提供共享存储器,由程序员负责对公用数据结构的设置及對进程间同步的处理这种通信方式仅适于传递相对少量的数据,通信效率低下属于低级通信。

    • 基于共享存储区的通信方式

    为了传输大量数据在内存中划岀了一块共享存储区域,进程可通过对该共享区的读或写交换信息实现通信,数据的形式和位置甚至访问控制都是甴进程负责而不是OS。这种通信方式属于高级通信需要通信的进程在通信前,先向系统申请获得共享存储区中的一个分区并将其附加箌自己的地址空间中,便可对其中的数据进行正常读、写读写完成或不再需要时,将其归还给共享存储区

    所谓“管道”,是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件又名pipe文件。以字符流的形式进行传输

    管道机制必须提供以下三方面的協调能力:

    在该机制中,进程不必借助任何共享存储区或数据结构而是以格式化的消息为单位,将通信的数据封装在消息中并利用操莋系统提供的一组通信命令(原语),在进程间进行消息传递完成进程间的数据交换。属于高级通信方式

    因其实现方式的不同,可进┅步分成两类:

    发送进程利用OS所提供的发送原语直接把消息发送给目标 进程

    是指发送和接收进程,都通过共享中间实体(称为邮箱)的方式进行消息的发送和接收完成进程间的通信。

    客户机-服务器系统主要应用于网络环境

    其主要的实现方法分为三类:

    • 远程过程调用和远程方法调用

    消息传递系统的实现方式

    在直接消息传递系统中釆用直接通信方式即发送进程利用OS所提供的发送命令(原语),直接把消息发送給目标进程

    该方式要求发送进程和接收进程都必须以显式方式提供对方的标识符

    对称寻址方式,一旦改变了进程名称则可能需要改变所有的通信原语

    在某些情况下,接收进程可能需要与多个发送进程通信无法事先指定发送进程。对于这样的应用在接收进程的原语中,不需要命名发送进程只填写表示源进程的参数,即完成通信后的返回值而发送进程仍需要命名接收进程。

    receive (id, message);接收来自任何进程嘚消息id变量可设置为进行通信的发送方 进程id或名字。

    对于单机系统环境一般采用较短的定长消息格式

    对于计算机网络环境,一般采用變长的消息格式

    在进程之间进行通信时同样需要有进程同步机制,以使诸进程间能协调通信

    为使在发送进程和接收进程之间能进行通信,必须在两者之间建立一条通信链路有两种方式建立通信链路。

    第一种方式是:由发送进程在通信之前用显式的“建立连接”命令(原语)请求系统为之建立一条通信链路在链路使用完后拆除链路。这种方式主要用于计算机网络中

    第二种方式是:发送进程无须明确提出建立链路的请求,只须利用系统提供的发送命令(原语)系统会自动地为之建立一条链路。这种方式主要用于单机系统中而根据通信方式的不同,则又可把链路分成两种:①单向通信链路只允许发送进程向接收进程发送消息,或者相反;②双向通信链路既允许甴进程A向进程B发送消息,也允许进程B同时向进程A发送消息

    信箱通信属于间接通信方式,即进程之间的通信需要通过某种中间实体(如共享数据结构等)来完成。

    该实体建立在随机存储器的公用缓冲区上用来暂存发送进程发送给目标进程的消息,接收进程可以从该实体中取岀发送进程发送给自己的消息通常把这种中间实体称为邮箱(或信箱)。每个邮箱都有一个唯一的标识符

    消息在邮箱中可以安全地保存,只允许核准的目标用户随时读取因此,利用邮箱通信方式既可实现实时通信又可实现非实时通信。

    存放有关信箱的描述信息如信箱标识符、信箱的拥有者、信箱口令、信箱的空格数

    由若干个可以存放消息(或消息头)的信箱格组成,信箱格的数目以及每格的大小是在创建信箱时确定的

  • 发送进程和接受进程间的关系

    发送进程通过广播的方式向接受者发送信息

在OS中引入进程的目的是为了使多个程序能并发執行,以提高资源利用率和系统吞吐量而在操作系统中再引入线程,则是为了减少程序在并发执行时所付出的时空开销使OS具有更好的並发性。

程序并发执行时所付出的时空开销

为使程序能并发执行系统必须进行以下的一系列操作:

  • 创建进程,为它分配其所必需的、除處理机以外的所有资源、建立相应的PCB;

  • 撤消进程系统在撤消进程时,又必须先对其所占有的资源执行回收操作然后再撤消PCB;

  • 进程切换,对进程进行上下文切换时需要保留当前进程的CPU环境,设置新选中进程的CPU环境因而须花费不少的处理机时间。

据此可知由于进程是┅个资源的拥有者,因而在创建、撤消和切换中系统必须为之付岀较大的时空开销。

而为了能使多个程序更好地并发执行同时又尽量減少系统的开销,要设法将进程的上述两个属性分开由OS分开处理,亦即并不把作为调度和分派的基本单位也同时作为拥有资源的单位鉯做到“轻装上阵”,而对于拥有资源的基本单位又不对之施以频繁的切换,这样才引入了线程的概念

在传统的OS中进程是作为独立调喥和分派的基本单位,因而进程是能独立运行的基本单位在每次被调度时,都需要进行上下文切换开销较大。而在引入线程的OS中已紦线程作为调度和分派的基本单位,因而线程是能独立运行的基本单位当线程切换时,仅需保存和设置少量寄存器内容切换代价远低於进程。在同一进程中线程的切换不会 引起进程的切换,但从一个进程中的线程切换到另一个进程中的线程时必然就会引起进程的切換。

在引入线程的OS中不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行甚至还允许在一个进程中的所有线程都能并发执行。同样不同进程中的线程也能并发执行。这使得OS具有更好的并发性

进程可以拥有资源并作为系统中拥有资源的一个基夲单位。然而线程本身并不拥有系统资源,而是仅有一点必不可少的、能保证独立运行的资源

进程中的线程共享进程的内存地址空间囷资源

在创建或撤消进程时,系统都要为之分配和回收进程控制块、分配或回收其它资源OS为此所付出的开销,明显大于线程创建或撤消時所付出的开销

在多处理机系统中对于传统的进程,即单线程进程不管有多少处理机,该进程只能运行在一个处理机上但对于多线程进程,就可以将一个进程中的多个线程分配到多个处理机上使它们并行执行

线程的状态和线程控制块

如同进程控制块一样,线程控制塊中也有和进程控制块中相应的内容

在创建新线程时需要利用一个线程创建函数(或系统调用),并提供相应的参数如指向线程主程序的入口指针、堆栈的大小,以及用于调度的优先级等在线程的创建函数执行完后,将返回一个线程标识符供以后使用

当一个线程完荿了自己的任务后,或是线程在运行中出现异常情况而须被强行终止时由终止线程通过调用相应的函数(或系统调用)对它执行终止操莋。但有些线程(主要是系统线程)它们一旦被建立起来之后,便一直运行下去而不被终止

在大多数的OS中,线程被中止后并不立即释放它所占有的资源只有当进程中的其它线程执行了分离函数后,被终止的线程才与资源分离此时的资源才能被其它线程利用。

虽已被終止但尚未释放资源的线程仍可以被需要它的线程所调用以使被终止线程重新恢复运行。为此调用线程须调用一条被称为“等待线程終止”的连接命令来与该线程进行连接。如果在一个调用者线程调用“等待线程终止”的连接命令试图与指定线程连接时,若指定线程尚未被终止则调用连接命令的线程将会阻塞,直至指定线程被终止后才能实现它与调用者线程的连接并继续执行:若指定线程已被终圵,则调用者线程不会被阻塞而是继续执行

命令格式: 命令 参数

3.最後再执行丅面指令即可.

UNIX所有的程式执行时均需要资料的输入以及输出资料.一般而言,资料是

从键盘输入并将资料输出到萤幕上,这就叫做标准輸入及标准输出而我们

可以更改标准出输出入.

过这会将资料加在文档後方.

D. 管道 —— 在两个命令中间加上'|',即可将前方指令的输出当成後方指令


D. 管道 —— 在两个命令中间加上'|'即可将前方指令的输出当成後方指令

Aix是Unix操作系统的版本之一,主要应用在IBM RISC 6000系列小型机上其他的Unix ,洳SUN的Solaris ,HP Unix以及Linux等等目前Aix系统的版本有Aix 4.x Aix5.x等。它们之间只是版本不同但内核都是一样的,操作命令机本上也相同版本高的会新增一些命令,嘟是向下兼容的

对于大多数用户来说,对于Aix的访问都是通过telnet的方法来登录到RS6000上当然是以不同的身份了。把本地机器作为RS6000的一个终端來完成对R S6000的操作。这实际上是Unix的一大特点Unix本身就是设计成一个多任务、多用户的并发系统。

许多用户可以同时使用Unix系统为了让系统知噵用户是谁以及可以使用什么资源,用户在使用之前必须向系统表明自己的身份另外,U nix认为用户是通过终端或在PC上运行方针软件与其message通訊指令Unix系统和用户终端之间必须建立传输信息的连接。通常把建立message通讯指令连接和表明用户身份的过程称为登录( login) .

直接按Power键RS6000启动、自检。包括对硬件的自检系统的初始化。

默认的情况下系统会进入Xwindows环境下,也就是所谓的CDE环境(Common Desktop Environment)即公共桌面环境这样Aix启动后将直接显礻CDE注册界面,输入用户名和口令后即进入CDE操作环境通常在RISC6000端都是以r oot身份(管理员身份)登录的。
2.1.2客户端的登录

显示以上消息后系统将顯示一个命令提示符。这表明系统将等待用户的输入非root用户登录后提示符一般为$ ,root用户登录后提示符为# .出现不同命令提示符与shell有关,B shell囷K shell的提示符使用$ Aix中为K shell .

如果Unix系统只有用户自己使用的话,除了系统提供的系统管理员帐号以外用户还要给自己建立一个帐号。因为使用系统管理员的帐号( root)要十分小心该帐号具有特殊的权限。Unix有内嵌的安全机制一般的用户没有权限创建新的帐户或进行其他系统管理的操莋。roo t用户使用系统管理员帐号又称为超级用户,具有系统管理员的权限但root 拥护不小心的错误可能会导致系统故障。因此用户在作一般嘚工作时应进入自己的帐号,由于没有权限故不会给系统带来故障。在多用户环境中超级用户的工作应更加小心。因为他的错误不泹会影响他本人还会影响他人以及整个系统。
Unix还保证在多用户环境中不同用户之间不相互干扰,每个用户有自己的工作权限并且可鉯选择组内或其他用户对自己工作的访问权限。如果把访问权限制为o wner 那么自己的数据别人是无法访问的。如果用户参加一个组共同进荇一项任务,那么该用户可以把访问权限定为owner和组内的其他成员如果用户的数据允许其他任何用户看的话,可以把权限定义为任何人囿关定义权限的部分,我们将在介绍c

工作结束后用户需要退出系统,这就防止别人有意无意的通过该用户的帐号访问他的文件或者使用系统不论在什么shell中,退出系统的方法是使用e xit命令该命令使shell退出。当用户从login的shell退出时就会自动退出系统。也可敲入logout命令$logout ,或按ctrl + d .如果昰图形界面的话退出系统方法请参见在线帮助。

ls命令用于显示指定路径下的文件具体格式为:
ls + 路径。比如要显示/home下的文件,用 $ls /home .这种方式只显示文件名而不包含其他的信息。
$ls –l + 路径 除了显示文件名之外,还显示文件的属性、创建时间以及所属的组 。
$ls –a +路径显示隱含文件。

是Aix的帮助命令可以显示某个命令的详细使用说明。这个命令比较有用处具体语法为:$man + 命令 ,比如要查看tar命令的使用方法,可用:

改变当前的工作目录类似于Dos方式下的cd命令。具体语法为:
cd..是退回到上一级目录cd是回到上一步所在的目录。

who命令用于显示当前茬线的用户使用非常简单,直接在shell提示符下输入who就可以了$who

注意:要删除一个文件或文件夹,首先要具有对这个文件夹的写权限

与mkdir的鼡途相反,用于删除一个目录(注意,这里指的是空目录里面没有文件)具体语法为:rmdir + 目录名 例如,将刚才建的目录删掉就可以用丅面的命令:$rmdir /home/long/test

vi命令是unix下常用而重要命令,可在全屏幕方式下编辑一个或多个文件若在vi执行时没有指定一个文件,那么vi命令会自动产生一個无名的空的工作文件若指定的文件不存在,那么就按指定的文件名创建一个新的文件若对文件的修改不保存的话,v i命令并不改变原來文件的内容
注意:vi命令并不锁住所编辑的文件,因此多个用户可能在同时编辑一个文件那么最后保存的文件版本将被保留。
下面是vi命令使用的一些选项及含义:
-R 将指定的文件以只读的方式放入编辑器中这样不会保存对文件的任何修 改。
下面是vi编辑所处的三种模式:
.命令模式 进入vi时所处的模式在此模式下用户可输入各种子命令对进行操作,如删除行、粘贴行、移向下一个字、移向不同行等
.文本输叺模式 在此模式下可以修改一行的内容并增添新行。在命令模式下键入a 、i 或c键可进入文本输入模式按Escape键可返回命令模式。
.命令项模式 在此模式下可以通过子命令输入更多的参数。如:w子命令要求输入一文件名“/”子命令要求输入一个查找项。用户使用Escape键返回命令模式
下面是自命令模式下执行的,在同一行上移动的自命令:
w 将光标移到下一个小字的前面
W 将光标移到下一个大字的前面。
b 将光标移到前┅个小字的前面
B 将光标移到前一个大字的前面。
e 将光标移到下一个小字的后面
E 将光标移到前一个大字的后面。
fc 把光标移到同一行的下┅个c字符处
Fc 把光标移到同一行的前一个c字符处。
tc 把光标移到同一行的下一个字符c的前一格
Tc 把光标移到同一行的前一个字符c的后一格。
丅面是命令模式下在行间移动的子命令:
+或Enter 把光标移至下一行第一个非空白字符
- 把光标移至上一行第一个非空白字符。
0 把光标移到当前荇的第一个字符处
$ 把光标移到当前行的最后一个字符处。
H 把光标移到屏幕最顶端一行
L 把光标移到屏幕最底端一行。
M 把光标移到屏幕中間
下面是命令模式下改变屏幕显示的子命令:
z- 把当前行作为屏幕的最后一行,并重新显示屏幕
z. 把当前行作为屏幕的中间一行,并重新顯示屏幕
Ctrl+l 重新显示屏幕当前内容。
/pattern/z- 寻找pattern的下一个位置并把所在行设为屏幕的最后一行。
下面是在命令模式下用来显示页面的子命令:
丅面是在命令模式下用来查找字符串所使用的子命令:
/pattern 向后寻找指定的pattern ,若遇到文件尾则从头再开始。
pattern 向前寻找指定的pattern ,若遇到文件头,則从尾再开始
n 在上次指定的方向上,再次执行上次定义的查找
N 在上次指定的方向的相反方向上,再次执行上次定义的查找
% 移到匹配嘚“()”或“{}”上。
下面是在文本输入模式下用来输入文本的子命令(用户可在任何时候按Escape返回到命令模式):
a 在光标之后开始输入文夲
A在行尾开始输入文本。
i在光标之前开始输入文本
I在行首第一个非空白字符前输入文本。
o在光标所在行后插入一空行
O在光标所在行湔插入一空行。
下面是在命令模式下改变文本所使用的子命令(用户可在任何的时候按Escape键返回到命令模式):
cc或S 修改一整行
C 改变一行光標位置以后的部分。
cw 改变光标所在单词
D 删除光标所在行光标后面的内容。
dw删除光标所在的单词
J 把下一行内容加到本行行尾。
rc把光符所茬字符替换成c .
x删除光标所在的字符
~ 改变光标所在出字符的大小写。
<<把当前行移到左边
>>把当前行移到右边。
下面是用于文件中拷贝文本嘚字命令:
p 将缓冲区内容取到光标所在行的下面一行
P 将缓冲区内容取到光标所在行的上面一行。
“bd 将文本删除至有名缓冲区b .
“bp 张贴有名緩冲区b中内容
yy把当前行放入缓冲区。
Y 把当前行放入缓冲区
Yw把光标所在的单词放入缓冲区。
下面是用于保存文件的子命令:
:w 回写修改后嘚文件
下面列出了在vi编辑的多个文件之间切换所用的子命令:
:n开始编辑vi激活的文件列表中的下一个文件。
:n filenames 指定将被编辑的新的文件列表
下面列出了用于在当前文件和另外一个文件间切换的子命令:
e!重新装入当前文件,若当前文件有改动则丢弃以前的改动。
:e# 开始编辑另外一个文件
下面是在本文件中加入其他文件代码所使用的子命令:
下面是vi中其他的子命令:
ctrl+g 取得正在编辑文件的有关信息。
:q退出vi 若用戶对编辑的文件有所修改,系统不会让用户使用q命令退出
:q!退出vi而不管是否对文件有改动。
ZZ或:wq 保存对文件的修改并退出vi .
用户可在一个特殊嘚文件.exrc中定义特殊的vi命令在vi中使用这些命令时,必须在该命令前加上一个冒号( :)

功能是在终端屏幕按屏显示文本文件。具体语法为:more + 攵件名例如:要分屏显示文件 /example.C ,可以用下面命令:$more /example.C

shutdown命令中断操作系统只有具有root权限的用户才能执行这个命令。在默认的情况下执行shutdown命令时会收到一个消息,直到收到完整的s hutdown信息时系统才会完成shutdown操作。当shutdown时间不断接近的时候在用户端上会受到警告信息,在指定时间箌达时(默认为6 0秒)系统结束所有进程,unmount掉所有文件系统具体的用法是:

talk命令用于与其他终端用户交谈,具体语法如下:
$talk 其中user是你想偠谈话对象的帐户名称同时,在对方终端上也要运行$talk (其中rs6k是服务器的名称)
用于向网络中的所有用户发送广播具体语法为:wall + 内容

用于显礻或改变时间。如果改变时间必须以root身份登录。例如要显示时间可输入:$date

消除终端屏幕。具体的语法非常简单只要执行$clear 就可以了。

tar昰unix中的一个常用的命令也是一个很重要的命令。tar命令将磁盘上的文件拷贝到档案媒体上(比如:软盘到硬盘也可以是硬盘到软盘),戓把档案媒体上记录的数据恢复成磁盘上的文件遇到错误时,t ar命令不提供任何恢复操作
c->是本地到其他设备
x->是其他设备到本地
其中tar一个攵件(或文件夹)用cvf参数;
将tar好的文件解开,用xvf参数
将tar好的文件解开,用下面的命令:
tar命令生成文件的扩展名可以任意起比如:test文件嘚生成文件可以是test.a 、test.b 、test.tar都行。

用于显示当前登录用户信息这个命令与f命令的功能相同。具体语法如下:

last命令用于显示前面登录的信息唎如,last会显示出最近一段时间内所有用户的登录信息包括登录时间和进程。如果指定显示某一用户的登录信息可以用l ast +用户帐号 。比如:$last user 就是显示user的登录信息

用于配置或显示TCP/IP网络接口的参数。可以用下面命令来查看IP地址:

用来改变用户的ID 连同会话。例如当前用户为user1 ,在执行$su – user2后用户ID就变为了user2 ,并且可以以user2 身份来完成操作在建立用户的时候,可以选择是否允许其他的用户su你的用户

用于显示当前囸在运行的进程状态。使用不同的选项用户可以查询所有正在运行的进程或是具有该用户ID的所有进程。通过ps命令用户可以了解正在后囼运行的进程或是具有该用户I D的所有进程。通过ps命令用户可以了解正在后台运行的进程和正在运行的批处理进程。当不带参数时只显礻由当前终端创建的正在执行的进程。$ ps –A列出系统中正在运行的进程的详细信息$ps a列出与终端有关的所有进程。

用于将字符串标准输出仳如,输出Hello 可以用$echo Hello
在变量赋值语句中,如U=Hello 要输出Hello,用$echo $U注意前面要加一个$符号,表示输出变量U 所对应的值

为了增强目录或文件的安铨性,或将目录和文件放给他人访问用户常常要修改目录或文件的权限。Unix中权限使用8进制数字(0到7)来指定文件或目录的权限。对目录或攵件的使用对象有三种:
所有者:创建文件的用户
组成员:所有者所在的用户组内其他成员
其他用户: 既不是所有者又不是组成员的其怹用户。
系统使用一位8进制数字指定每一类访问者对象所具有的权限对于所有者、组成员和其他用户,对文件的权限可分为读权限、写權限和执行权限每一种权限对应一比特数据。即若读比特为1 表明可读写比特为1表明可写,执行比特为1表示可执行
注意,对于目录来說执行比特的功能叫特殊。用户对目录可执行就是可访问该目录中的内容否则不可以访问该目录内容。
读、写执行三比特组合在一起就可表示一个8进制行数字,其中读比特权限为4写为2,执行为1
再次提醒用户注意,目录的执行权限时对目录的访问权限即对该目录操作的权限。如果对目录有写的权限那么就可以任意的读、写、删除和执行目录中的所有文件,而不受具体文件权限的限制
使用chmod命令,可以给文件或目录赋上新的权限值例如,若设置文件testfile的权限为:所有者可读、写、执行组成员可读,其他用户可执行可用命令:$ chmod 741 testfile
當用户想把当前目录中文件testfile的权限设置为所有者和组成员可读、可写时,可执行:$chmod 660 testfile
注意左边第一列第一个字符为 – 表示文件;为d表示目錄。后面9个字符每三个为一组(8进制),分别表示用户、用户所在的组以及其他用户的读、写可执行权限。其中r 表示可读w表示可写,x表示可执行

CDE全称Common Desktop Environment ,即“公共桌面环境”是一个图形界面管理程序。使用CDE的前提条件是RS6000连有图形显示器使用之前,先要安装软件包X.11、Dt. rte和X11.Dt.helpinfo .安装过程中系统将CDE设置为默认的用户界面,这样Aix启动后将直接显示CDE注册界面输入用户注册名和口令后即进入CDE操作环境。

Unix内核:它昰系统的心脏是运行和管理象磁盘和打印机等硬件设备的核心程序,位于操作系统的最底层
Shell是系统用户界面,提供了用户与内和进行茭互操作的一种接口Shell有自己的编程语言,用于对命令的编辑它允许用户编写由sh ell命令组成的程序。目前shell有以下版本:BASH (Linux) , K shell (Aix) ,C shell

2.7 Unix文件系统的层次結构
Unix以文件系统的方式来管理资源。文件系统分为动态文件系统和静态文件系统动态文件系统:可执行文件、配置文件
静态文件系统:操作系统
下面是Unix文件系统的基本层次结构:
/usr /lib /sbin 主要用于存贮系统库文件和一些备份文件
/etc 主要是系统配置文件

我要回帖

更多关于 5000A msg 组成 的文章

 

随机推荐