小小 问题 前辈 指教??

slzmiaoer 2003-08-25 08:03:54
原语操作:是指 一组操作 要么全做 要么全不做,是一组不可分割的操作。

就 我的理解 只有 单一的一条指令 才能 做到要么全做 要么不做

操作系统 是怎样实现 原语操作的呢 ??
谢谢 指教
...全文
64 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
slzmiaoer 2003-08-26
  • 打赏
  • 举报
回复
我 问的是
操作系统 实现 原语操作的 原理

是不是 原语操作中 把 时钟中断 等 中断全部 屏蔽掉
就 实现了 其 操作的 不可打断性??
ceocio 2003-08-26
  • 打赏
  • 举报
回复
创建原语
进程可借助创建原语建立一个子进程,创建进程的主要操作过程是:
(1)申请一个空闲的PCB;
(2)为新进程分配资源;
(3)将新进程的PCB初始化;
(4)将新进程加到就绪队列中

撤销原语
一个进程在完成其任务后,应将该进程撤销,以便释放出它所占用的资源,撤销原语一般由其父进程或祖先发出,不会自己撤销自己。一旦系统中出现要求终止进程的事件后,便调用进程终止原语。终止进程的主要操作过程是:
(1)从系统的PCB表中找到指定进程的PCB。若它正处于运行态,则立即中止该进程的运行;
(2)回收该进程所占用的全部资源;
(3)若该进程还有子孙进程,则还要终止其所有子孙进程,回收它们所占用的全部资源;
(4)释放被终止进程的PCB,并从原来队列中摘走。

阻塞原语
正在运行的进程因等待某事件发生,只能转变为阻塞态,等待相应事件出现后再把它唤醒。
正在运行的进程通过调用阻塞原语主动地把自己阻塞。进程阻塞的过程如下:
(1)立即停止当前进程的执行;
(2)将现行进程的CPU现场送到该进程的PCB现场保护区中保存起来,以便将来重新运行时恢复此时的现场;
(3)把该进程PCB中的现行状态由“运行”改为阻塞,把它插入到具有相同事件的阻塞队列中;
(4)然后转到进程调度程序,重新从就绪队列中挑选一个合适进程投入运行。

唤醒原语
当被阻塞进程所等待的事件出现时,则由另外的与被阻塞进程相关的进程调用唤醒原语,将等待该事件的进程唤醒。可见,被阻塞进程不能唤醒自己。
唤醒原语的主要操作过程是:
(1)首先把被阻塞进程从相应的阻塞队列中摘下;
(2)将现行状态改为就绪态,然后把该进程插入到就绪队列中;
(3)如果被唤醒进程比运行进程有更高的优先级,则设置重新调度标志。
阻塞原语与唤醒原语恰好是一对相反的原语:调用前者是自己去睡眠,调用后者是把“别人”唤醒。使用时也要成对,前边有睡的,后边要有叫醒的。否则,前者就要“长眠”了。

挂起原语
当需要把某进程置于挂起就绪状态或挂起阻塞状态时,可调用挂起原语。调用挂起原语的进程只能挂起它自己或它的子孙。

激活原语(解除挂起)
激活原语将处于静止状态的进程变为活动状态。一个进程只能将自己的子孙进程解挂。一个进程可以将自己挂起,却不能将自己解挂。
ceocio 2003-08-26
  • 打赏
  • 举报
回复
所谓原语:是机器指令的延伸,往往是为完成某些特定的功能而编制的一段系统程序。为保证操作的正确性,在许多机器中规定,执行原语操作时,要屏蔽中断,以保证其操作的不可分割性。

6,849

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧