當前位置:首頁 » 編程軟體 » 原語編譯

原語編譯

發布時間: 2023-01-23 15:13:39

① 怎麼用c語言編程 實現創建原語、撤銷原語、阻塞原語和喚醒原語

下,應該差不多

一、如何建立線程
用到的頭文件
(a)pthread.h
(b)semaphore.h
(c) stdio.h
(d)string.h
定義線程標識
pthread_t
創建線程
pthread_create
對應了一個函數作為線程的程序段
注意的問題
要保證進程不結束(在創建線程後加死循環)
在線程中加入While(1)語句,也就是死循環,保證進程不結束。

二、控制線程並發的函數
sem_t:信號量的類型
sem_init:初始化信號量
sem_wait:相當於P操作
sem_post:相當於V操作

三、實現原形系統
父親、母親、兒子和女兒的題目:
桌上有一隻盤子,每次只能放入一隻水果。爸爸專放蘋果,媽媽專放橘子,一個兒子專等吃盤子中的橘子,一個女兒專等吃盤子中的蘋果。分別用P,V操作和管程實現

每個對應一個線程
pthread_t father; father進程
pthread_t mother; mother進程
pthread_t son; son進程
pthread_t daughter; daughter進程

盤子可以用一個變數表示
sem_t empty;

各線程不是只做一次,可以是無限或有限次循環
用While(1)控制各線程無限次循環

輸出每次是那個線程執行的信息
printf("%s\n",(char *)arg);通過參數arg輸出對應線程執行信息

編譯方法
gcc hex.c -lpthread
生成默認的可執行文件a.out
輸入./a.out命令運行
查看結果:程序連續運行顯示出
father input an apple.
daughter get an apple.
mother input an orange.
son get an orange.
mother input an orange.
son get an orange.
………………..
四、程序源代碼
#include <stdio.h>
#include<string.h>
#include <semaphore.h>
#include <pthread.h>
sem_t empty; //定義信號量
sem_t applefull;
sem_t orangefull;

void *procf(void *arg) //father線程
{
while(1){
sem_wait(&empty); //P操作
printf("%s\n",(char *)arg);
sem_post(&applefull); //V操作
sleep(7);
}

}
void *procm(void *arg) //mother線程
{
while(1){
sem_wait(&empty);
printf("%s\n",(char *)arg);
sem_post(&orangefull);
sleep(3);
}
}
void *procs(void *arg) //son線程
{
while(1){
sem_wait(&orangefull);
printf("%s\n",(char *)arg);
sem_post(&empty);
sleep(2);
}
}
void *procd(void *arg) //daughter線程
{
while(1){
sem_wait(&applefull);
printf("%s\n",(char *)arg);
sem_post(&empty);
sleep(5);
}

}

main()
{
pthread_t father; //定義線程
pthread_t mother;
pthread_t son;
pthread_t daughter;
sem_init(&empty, 0, 1); //信號量初始化
sem_init(&applefull, 0, 0);
sem_init(&orangefull, 0, 0);

pthread_create(&father,NULL,procf,"father input an apple."); //創建線程
pthread_create(&mother,NULL,procm,"mother input an orange.");
pthread_create(&daughter,NULL,procd,"daughter get an apple.");
pthread_create(&son,NULL,procs,"son get an orange.");

while(1){} //循環等待
}
另外,站長團上有產品團購,便宜有保證

② 逐字翻譯、直譯和意譯的區別是求大神解答

直譯法是指在不違背英語文化的前提下,在英譯文中完全保留漢語詞語的指稱意義,求得內容和形式相符的方法。

意譯是指譯者在受到譯語社會文化差異的局限時,不得不舍棄原文的字面意義,以求疑問與原文的內容相符和主要語言功能的相似。意譯指在譯文中舍棄原作的表達方法,另覓同意等效的表達方法, 或指對原作的句子結構進行較大的變化或調整。

簡單地說,直譯指在譯文中採用原作的的表達方法,句子結構與原句相似,但也不排除在短語層次進行某些調整。

翻譯時,一般有直譯和意譯兩種方法。直譯就是按照原文,逐字逐句地翻譯出來,意譯則是換一種方式將原文的意思表達出來。

做商業翻譯時,一般的原則是,能直譯時盡量直譯,在徵得客戶的同意的前提下或客戶要求時,可以適當意譯。另外,如果能以基本相同的結構形式表達出原文的意思,盡量採用相同的結構形式,如果實在不能保持原文的形式,則可以適當變通。

直譯舉例:

如,When you arrive, please call me. →你到了之後給我打電話。如果原文是"Pleas call me when you arrive",譯文一般不能保持原文的形式,說,「給我打電話,你到了之後」,還是應該翻成「你到了之後給我打電話」。編譯一般在商業翻譯中不常見,是將原文內容翻譯出來後進行編輯,只留下自己需要的部分使用,在此不多做說明。

③ 改譯,編譯,節譯等分類在翻譯中屬於翻譯策略還是翻譯實踐的分類,除此外還有其他什麼類別

這是按翻譯的處理方式分類
還可以根據:
1、根據翻譯作品在譯入語言文化中所預期的作用,分為工具性翻譯和文獻性的翻譯。
2、根據翻譯所涉及的語言的形式與意義。分為語義翻譯和交際翻譯。語義翻譯在譯入語語義和句法結構允許的條件下,盡可能准確再現原作上下文的意義,交際翻譯追求譯文讀者產生的效果盡量等同於原作對原文讀者產生的效果。
3、根據譯者對原文和譯文進行比較與觀察的角度,分為文學翻譯和語言學翻譯。文學翻譯尋求譯文與原文之間文學功能的對等,其理論往往主張在不可能復制原文文學表現手法的情況下,譯文只能更美而不能遜色,缺點是不重視語言結構之間的比較和關系問題。語言學翻譯尋求兩者之間的系統轉換規律,主張把語言學研究的成果用於翻譯,同時通過翻譯實踐促進語言學的發展。
4、根據翻譯目的與原語在語言形式上的關系,分為直譯與意譯。
5、根據翻譯媒介分為口譯、筆譯、視譯、同聲傳譯、機器翻譯和人機協作翻譯。
參考資料:http://wenku..com/view/538479e9b8f67c1cfad6b874.html
希望能幫到你。

④ verilog的原語啥意思是

在一般的verilog設計中,一般採用數字邏輯設計,由軟體將數字邏輯轉化為特定的數字電路。但是,對於某些特殊的領域,有可能需要用戶直接自定義數字電路以達到對指定電路的設計。原語就是執行這個功能的。原語也就是門級語言。這個語言之於verilog就像匯編語言之於C語言一樣,是門級網表所採用的語法。了解這個語言的語法,可以提高對編譯器工作的認識。下面是一個例子and and1(out,in1,in2);

⑤ fpga中 ip核與硬體原語有什麼區別

硬體原語比較底層,可以針對一個邏輯單元來操作,是軟體中集成好的,不需要向調用IP核那樣復雜的過程,可以直接在代碼中調用,當然功能相對比較簡單。而IP核功能比較多,調用時需要設置很多參數。

⑥ 操作系統課程設計《設計內核同步原語》

這里介紹linux內核修改

內核配置過程比較煩瑣,但是配置的適當與否與日後linux的運行直接相關,有必要了解一下一些主要的且經常用到的選項的設置。

配置內核可以根據需要與愛好使用下面命令中的一個:
#make config(基於文本的最為傳統的配置界面,不推薦使用)
#make menuconfig(基於文本選單的配置界面,字元終端下推薦使用)
#make xconfig(基於圖形窗口模式的配置界面,Xwindow下推薦使用)
#make oldconfig(如果只想在原來內核配置的基礎上修改一些小地方,會省去不少麻煩)
這三個命令中,make xconfig的界面最為友好,如果你可以使用Xwindow,那麼就推薦你使用這個命令
如果你不能使用Xwindow,那麼就使用make menuconfig好了。界面雖然比上面一個差點,總比make config的要好多了
選擇相應的配置時,有三種選擇,它們分別代表的含義如下:
Y--將該功能編譯進內核
N--不將該功能編譯進內核
M--將該功能編譯成可以在需要時動態插入到內核中的模塊
如果使用的是make xconfig,使用滑鼠就可以選擇對應的選項。如果使用的是 make menuconfig,則需要使用空格鍵進行選取。你會發現在每一個選項前都有個括弧, 但有的是中括弧有的是尖括弧,還有一種圓括弧。用空格鍵選擇時可以發現,中括弧里要麼是空,要麼是"*",而尖括弧里可以是空,"*"和"M"。這表示前者對應的項要麼不要,要麼編譯到內核里;後者則多一樣選擇,可以編譯成模塊。而圓括弧的內容是要你在所提供的幾個選項中選擇一項。
在編譯內核的過程中,最煩雜的事情就是這步配置工作了,很多新手都不清楚到底該如何選取這些選項。實際上在配置時,大部分選項可以使用其預設值,只有小部分需要根據用戶不同的需要選擇。選擇的原則是將與內核其它部分關系較遠且不經常使用的部分功能代碼編譯成為可載入模塊,有利於減小內核的長度,減小內核消耗的內存,簡化該功能相應的環境改變時對內核的影響;不需要的功能就不要選;與內核關心緊密而且經常使用的部分功能代碼直接編譯到內核中。
至於選項,因為比較復雜,只是簡單做一介紹,編譯時應視具體情況,參考幫助的內容再加以選擇。
1. Code maturity level options
代碼成熟等級。此處只有一項:prompt for development and/or incomplete code/drivers,如果你要試驗現在仍處於實驗階段的功能,比如khttpd、IPv6等,就必須把該項選擇為Y了;否則可以把它選擇為N。
2. Loadable mole support
對模塊的支持。這裡面有三項:
Enable loadable mole support:除非你准備把所有需要的內容都編譯到內核裡面,否則該項應該是必選的。
Set version inFORMation on all mole symbols:可以不選它。
Kernel mole loader:讓內核在啟動時有自己裝入必需模塊的能力,建議選上。
3. Processor type and features
CPU類型。內容蠻多的,不一一介紹了,有關的幾個如下:
Processor family:根據你自己的情況選擇CPU類型。
High Memory Support:大容量內存的支持。可以支持到4G、64G,一般可以不選。
Math emulation:協處理器模擬。協處理器是在386時代的寵兒,現在早已不用了。
MTTR support:MTTR支持。可不選。
Symmetric multi-processing support:對稱多處理支持。除非你富到有多個CPU,否則就不用選了。
4. General setup
這里是對最普通的一些屬性進行設置。這部分內容非常多,一般使用預設設置就可以了。下面介紹一下經常使用的一些選項:
Networking support:網路支持。必須,沒有網卡也建議你選上。
PCI support:PCI支持。如果使用了PCI的卡,當然必選。
PCI access mode:PCI存取模式。可供選擇的有BIOS、Direct和Any,選Any吧。
Support for hot-pluggabel devices:熱插拔設備支持。支持的不是太好,可不選。
PCMCIA/CardBus support:PCMCIA/CardBus支持。有PCMCIA就必選了。
System V IPC
BSD Process Accounting
Sysctl support:以上三項是有關進程處理/IPC調用的,主要就是System V和BSD兩種風格。如果你不是使用BSD,就按照預設吧。
Power Management support:電源管理支持。
Advanced Power Management BIOS support:高級電源管理BIOS支持。
5. Memory Technology Device(MTD)
MTD設備支持。可不選。
6. Parallel port support
並口支持。如果不打算使用串口,就別選了。
7. Plug and Play configuration
即插即用支持。雖然linux對即插即用目前支持的不如Windows好,但是還是選上吧,這樣你可以拔下滑鼠之類的體驗一下Linux下即插即用的感覺。
8. Block devices
塊設備支持。這個就得針對自己的情況來選了,簡單說明一下吧:
Normal PC floppy disk support:普通PC軟盤支持。這個應該必選。
XT hard disk support:
Compaq SMART2 support:
Mulex DAC960/DAC1100 PCI RAID Controller support:RAID鏡像用的。
Loopback device support:
Network block device support:網路塊設備支持。如果想訪問網上鄰居的東西,就選上。
Logical volume manager(LVM)support:邏輯卷管理支持。
Multiple devices driver support:多設備驅動支持。
RAM disk support:RAM盤支持。
9. Networking options
網路選項。這里配置的是網路協議。內容太多了,不一一介紹了,自己看吧,如果你對網路協議有所了解的話,應該可以看懂的。如果懶得看,使用預設選項(肯定要選中TCP/IP networking哦)就可以了。讓我們看看,TCP/IP、ATM、IPX、DECnet、Appletalk……支持的協議好多哦,IPv6也支持了,Qos and/or fair queueing(服務質量公平調度)也支持了,還有kHTTPd,不過這些都還在實驗階段。
10. Telephony Support
電話支持。linux下可以支持電話卡,這樣你就可以在IP上使用普通的電話提供語音服務了。記住,電話卡可和modem沒有任何關系哦。
11. ATA/IDE/MFM/RLL support
這個是有關各種介面的硬碟/光碟機/磁帶/軟盤支持的,內容太多了,使用預設的選項吧,如果你使用了比較特殊的設備,比如PCMCIA等,就到裡面自己找相應的選項吧。
12. SCSI support
SCSI設備的支持。我沒有SCSI的設備,所以根本就不用選,如果你用了SCSI的硬碟/光碟機/磁帶等設備,自己找好了。
13. Fusion MPT device support
需要Fusion MPT兼容PCI適配器,不用選。
14. I2O device support
需要I2O介面適配器支持,在智能Input/Output(I2O)體系介面中使用。
15. Network device support
網路設備支持。上面選好協議了,現在該選設備了,可想而知,內容肯定多得很。還好還好,裡面大概分類了,有ARCnet設備、Ethernet(10 or 100 Mbit)、Ethernet(1000Mbit)、Wireless LAN(non-hamradio)、Token Ring device、Wan interfaces、PCMCIA network device support幾大類。我用的是10/100M的乙太網,看來只需要選則這個了。還是10/100M的乙太網設備熟悉,內容雖然多,一眼就可以看到我所用的RealTeck RTL-8139 PCI Fast Ethernet Adapter support,為了免得麻煩,編譯到內核裡面好了,不選M了,選Y。耐心點,一般說來你都能找到自己用的網卡。如果沒有,你只好自己到廠商那裡去要驅動了。
16. Amateur Radio support
配置業余無線廣播。
17. IrDA(infrared)support
紅外線支持。
18. ISDN subsystem
如果你使用ISDN上網,這個就必不可少了。
19. Old CD-ROM drivers(not SCSI、not IDE)
做的可真周到,原來那些非SCSI/IDE口的光碟機誰還在用啊,自己選吧,用IDE的CD-ROM不用選。
20. Character devices
字元設備。這個內容又太多了,先使用預設設置,需要的話自己就修改。把大類介紹一下吧:
I2C support:I2C是Philips極力推動的微控制應用中使用的低速串列匯流排協議。如果你要選擇下面的Video For linux,該項必選。
Mice:滑鼠。現在可以支持匯流排、串口、PS/2、C&T 82C710 mouse port、PC110 digitizer pad,自己根據需要選擇。
Joysticks:手柄。即使在linux下把手柄驅動起來意義也不是太大,游戲太少了。
Watchdog Cards:雖然稱為Cards,這個可以用純軟體來實現,當然也有硬體的。如果你把這個選中,那麼就會在你的/dev下創建一個名為watchdog的文件,它可以記錄你的系統的運行情況,一直到系統重新啟動的1分鍾左右。有了這個文件,你就可以恢復系統到重啟前的狀態了。
Video For linux:支持有關的音頻/視頻卡。
Ftape, the floppy tape device driver:
PCMCIA character device support:
21. File systems
文件系統。內容又太多了,老法子,在預設選項的基礎上進行修改。介紹以下幾項:
Quota support:Quota可以限制每個用戶可以使用的硬碟空間的上限,在多用戶共同使用一台主機的情況中十分有效。
DOS FAT fs support:DOS FAT文件格式的支持,可以支持FAT16、FAT32。
ISO 9660 CD-ROM file system support:光碟使用的就是ISO 9660的文件格式。
NTFS file system support:ntfs是NT使用的文件格式。
/proc file system support:/proc文件系統是linux提供給用戶和系統進行交互的通道,建議選上,否則有些功能沒法正確執行。
還有另外三個大類都歸到這兒了:Network File Systems(網路文件系統)、Partition Types(分區類型)、Native Language Support(本地語言支持)。值得一提的是Network File Systems裡面的兩種:NFS和SMB分別是linux和Windows相互以網路鄰居的形式訪問對方所使用的文件系統,根據需要加以選擇。
22. Console drivers
控制台驅動。一般使用VGA text console就可以了,標準的80*25的文本控制台。
23. Sound
音效卡驅動。如果你能在列表中找到音效卡驅動那自然最好,否則就試試OSS了。
24. USB supprot
USB支持。很多USB設備,比如滑鼠、數據機、列印機、掃描儀等,在linux都可以得到支持,根據需要自行選擇。
25. Kernel hacking
配置了這個,即使在系統崩潰時,你也可以進行一定的工作了。普通用戶是用不著這個功能的。
配置完後,存檔退出,當然你也可以把現在的配置文件保存起來,這樣下次再配置的時候就省力氣了。
接下來是編譯,輸入以下命令。
#make dep
#make clean
#make bzImage或make zImage
#make moles
#make moles_install
#depmod -a
第一個命令make dep實際上讀取配置過程生成的配置文件,來創建對應於配置的依賴關系樹,從而決定哪些需要編譯而那些不需要;第二命令make clean完成刪除前面步驟留下的文件,以避免出現一些錯誤;make zImage和make bzImage則實現完全編譯內核,二者生成的內核都是使用gzip壓縮的,只要使用一個就夠了,它們的區別在於使用make bzImage可以生成大一點的內核。建議大家使用make bzImage命令。
後面三個命令只有在你進行配置的過程中,在回答Enable loadable mole support (CONFIG_MODULES)時選了"Yes"才是必要的,make moles和make moles_install分別生成相應的模塊和把模塊拷貝到需要的目錄中。
嚴格說來,depmod -a命令和編譯過程並沒有關系,它是生成模塊間的依賴關系,這樣你啟動新內核之後,使用modprobe命令載入模塊時就能正確地定位模塊。
更新
經過以上的步驟,我們終於得到了新版本的內核。為了能夠使用新版本的內核,我們還需要做一些改動:
#cp /usr/src/linux/System.map /boot/System.map-2.4.18
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.18
以上這兩個文件是我們剛才編譯時新生成的。下面修改/boot下的兩個鏈接System.map和vmlinuz,使其指向新內核的文件:
#cd /boot;rm -f System.map vmlinuz
#ln -s vmlinuz-2.4.18 vmlinuz
#ln -s System.map-2.4.18 System.map
七、修改啟動管理器
如果用LILO,修改/etc/lilo.conf,添加以下項:
image=/boot/vmlinuz-2.4.18
label=linux240
read-only
root=/dev/hda2
其中root=/dev/hda2一行要根據需要自行加以修改。
運行:
#/sbin/lilo -v
確認對/etc/lilo.conf的編輯無誤,現在重新啟動系統:
#shutdown -r now
如果是用Grub啟動管理器,則添加如下幾項即可。
title Red Hat linux (2.4.18)
root (hd0,0)
kernel /vmlinuz-2.4.18 ro root=/dev/hda2
Grub不需再次調用命令,自動生效。
重啟以後就可以用新內核了。

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:710
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:972
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:681
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:833
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:741
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1081
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:312
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:192
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:879
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:837