原语 原语操作 原子操作

原语

内核或微核提供核外调用的过程或函数称为原语(primitive)。


原语是一段用机器指令编写的完成特定功能的程序,在执行过程中不允许中断。


BaiDu 解析

Introduction

操作系统用语范畴。  primitive or atomic action 是由若干多机器指令构成的完成某种特定功能的一段程序,具有不可分割性.即原语的执行必须是连续的,在执行过程中不允许被中断   不同层次之间对话的语言称为原语,即不同层之间通过原语来实现信息交换

Type

请求(Req)型原语,用于高层向低层请求某种业务;

证实(Cfm)型原语,用于提供业务的层证实某个动作已经完成;

指示(Ind)型原语,用于提供业务的层向高层报告一个与特定业务相关的动作;

响应(Res)型原语,用于应答,表示来自高层的指示原语已收到。

Application

原语通常由若干条指令组成,用来实现某个特定的操作。

通过一段不可分割的或不可中断的程序实现其功能。

原语是操作系统的核心,它不是由进程而是由一组程序模块所组成,是操作系统的一个组成部分,它必须在管态(一种机器状态,管态下执行的程序可以执行特权和非特权两类指令,通常把它定义为操作系统的状态)下执行,并且常驻内存,而个别系统有一部分不在管态下运行。

原语和广义指令都可以被进程所调用,两者的差别在于原语有不可中断性,它是通过在执行过程中关闭中断实现的,且一般由系统进程调用。

许多广义指令的功能都可用目态(一种机器状态,通常把它作为用户程序执行时的状态)下运行的系统进程完成,而不一定要在管态下完成。

例如文件的建立、打开、关闭、删除等广义指令,都是借助中断进入管态程序,然后转交给相应的进程,最终由进程实现其功能。  

引进原语的主要目的是为了实现进程的通信和控制。


原子操作

在多进程(线程)的操作系统中不能被其它进程(线程)打断的操作就叫原子操作,文件的原子操作是指操作文件时的不能被打断的操作。

原子还有一层意思,当该次操作不能完成的时候,必须回到操作之前的状态,原子操作不可拆分。

所有原子操作是同步的,而且不可被外部中断(内中断可以,不过一般是致命错误处理)。

也就是说,原子操作是中断安全的。



线程安全

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。

线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。      

线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据




你可能感兴趣的:(原语 原语操作 原子操作)