参考链接:https://www.cnblogs.com/hualalasummer/p/3704225.html
什么是“原语”
第一次看到“原语”这种提法还是在学习操作系统的时候,而且要么不碰到,一碰就是一双,“PV操作”这对原语就是我最先接触到的操作系统原语。当年 Alan Turing 在定义图灵机六个基本操作的时候也用了 primitive 这个词。当时觉得“原语”这个词很陌生,于是上网查了一下,大部分的解释都包含了“原子操作”的概念,事实上知道原语英文(primitives)的朋友应该知道它和“atomic”并没有多大关联,这说明“原语”和“原子”都姓“原”仅仅是一个巧合,尽管所有的“原语”看上去都是原子操作,但是它的定义绝对不仅限于此。
后来我在一个外国的论坛上找到了答案,具体的说法我已经忘了,简单地讲就是“石头、剪刀、布”这三样东西,除了“石头”是原语,而“剪刀”和“布头”不算,为什么呢?因为剪刀和布头都是人工合成的,而石头是浑然天成的。因此“原语”这个单词的定义还是要从它的英文原词 primitive 出发,也就是“原始”的意思。
我们知道物质的最小组成单位绝非原子,比原子小的是质子,比质子小的还有夸克。那么为什么我们看到一把剪刀以后很容易想到它的各个组成部分(比如锋利的部分用铁制成,而握的地方用塑料),而看到一块石头以后,脑子里还是只有一块石头,而不是各种矿物质的名称呢?原因是在人类形成最早语言的过程中还不知道什么是矿物质,众所周知人类的视力其实是很差的,只能看到光谱上面很小的一段可见光,也不能像显微镜一样看见的东西,直到道尔顿发现原子,人类科学才算走上了正轨。
计算机是一门人造科学,因此真正意义上的“原语”是不存在的。操作系统层面上的“原语”(比如 write 之类的系统调用)对程序员来讲的确是不可分割的最小单位,但是这写系统调用本身还是用好几句汇编语句组成的(对于 Linux 来说是 C 语言)。可能有人要说到了机器代码这一级就不能再分了,但事实上一条机器指令也是由好几个组合逻辑信号构成的。同样的道理,控制信号也不过是无数电子在器件内部漂移的结果。
因此定义“原语”的前提是观察者所处的位置。一旦规定了观察者的位置和观察的角度,比如就在操作系统的这层上,read,wirte,wait这些个系统调用自然就是最“原始”的词汇,这也是为什么“原语”会在操作系统中频繁出现的缘故。
参考链接:https://baike.baidu.com/item/%E5%8E%9F%E8%AF%AD/3794081?fr=aladdin
计算机进程的控制通常由原语完成。所谓原语,一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。在操作系统中,某些被进程调用的操作,如队列操作、对信号量的操作、检查启动外设操作等,一旦开始执行,就不能被中断,否则就会出现操作错误,造成系统混乱。所以,这些操作都要用原语来实现 原语是操作系统核心(不是由进程,而是由一组程序模块组成)的一个组成部分,并且常驻内存,通常在管态下执行。原语一旦开始执行,就要连续执行完,不允许中断。