什麼是原語?

2021-10-01 11:51:14 字數 983 閱讀 3459

第一次看到「原語」這種提法還是在學習作業系統的時候,而且要麼不碰到,一碰就是一雙,「pv操作」這對原語就是我最先接觸到的作業系統原語。當年 alan turing 在定義圖靈機六個基本操作的時候也用了 primitive 這個詞。當時覺得「原語」這個詞很陌生,於是上網查了一下,大部分的解釋都包含了「原子操作」的概念,事實上知道原語英文(primitives)的朋友應該知道它和「atomic」並沒有多大關聯,這說明「原語」和「原子」都姓「原」僅僅是乙個巧合,儘管所有的「原語」看上去都是原子操作,但是它的定義絕對不僅限於此。

後來我在乙個外國的論壇上找到了答案,具體的說法我已經忘了,簡單地講就是「石頭、剪刀、布」這三樣東西,除了「石頭」是原語,而「剪刀」和「布頭」不算,為什麼呢?因為剪刀和布頭都是人工合成的,而石頭是渾然天成的。因此「原語」這個單詞的定義還是要從它的英文原詞 primitive 出發,也就是「原始」的意思。

我們知道物質的最小組成單位絕非原子,比原子小的是質子,比質子小的還有夸克。那麼為什麼我們看到一把剪刀以後很容易想到它的各個組成部分(比如鋒利的部分用鐵製成,而握的地方用塑料),而看到一塊石頭以後,腦子裡還是只有一塊石頭,而不是各種礦物質的名稱呢?原因是在人類形成最早語言的過程中還不知道什麼是礦物質,眾所周知人類的視力其實是很差的,只能看到光譜上面很小的一段可見光,也不能像顯微鏡一樣看見的東西,直到道爾頓發現原子,人類科學才算走上了正軌。

計算機是一門人造科學,因此真正意義上的「原語」是不存在的。作業系統層面上的「原語」(比如 write 之類的系統呼叫)對程式設計師來講的確是不可分割的最小單位,但是這寫系統呼叫本身還是用好幾句彙編語句組成的(對於 linux 來說是 c 語言)。可能有人要說到了機器**這一級就不能再分了,但事實上一條機器指令也是由好幾個組合邏輯訊號構成的。同樣的道理,控制訊號也不過是無數電子在器件內部漂移的結果。

因此定義「原語」的前提是觀察者所處的位置。一旦規定了觀察者的位置和觀察的角度,比如就在作業系統的這層上,read,wirte,wait這些個系統呼叫自然就是最「原始」的詞彙,這也是為什麼「原語」會在作業系統中頻繁出現的緣故。

linux系統原語

一 程序控制原語 1 程序建立 fork 格式 pid int fork fork呼叫返回時,系統中已有兩個使用者級環境完成相同的程序存在,這兩個程序從fork呼叫中得到的返回值不同,其中子程序得到的返回值為0,父程序得到的返回值是新建立子程序的程序標識號,子程序得到是0。2 系統呼叫 exec函式...

基礎 PV原語

pv原語通過操作訊號量來處理程序間的同步與互斥的問題。p原語 為阻塞原語,負責把當前程序由執行狀態轉換為阻 塞狀態,直到另外乙個程序喚醒它。操作為 申請乙個空閒資源 把訊號量減1 若成功,則退出 若失敗,則該程序被阻塞 v原語 為喚醒原語,負責把乙個被阻塞的程序喚醒,它有乙個參數列,存放著等待被喚醒...

什麼是LVM 什麼是LV 什麼是VG

lvm logicl volume manager 邏輯卷管理器,通過使用邏輯卷管理器對硬碟儲存裝置進行管理,可以實現硬碟空間的動態劃分和調整。一 基本概念 1 物理卷 pv physical volume 物理卷在邏輯卷管理中處於最底層,它可以是實際物理硬碟上的分割槽,也可以是整個物理硬碟。2 捲...