特別聲明
- 制作:張老板
- 部分內(nèi)容借鑒于CSDN博主「回阿女」的原創(chuàng)文章生巡,原文鏈接:https://blog.csdn.net/weixin_43634327/article/details/103455692
簡(jiǎn)答和編程
寫出20條命令
ls mv cp mkdir touch cd pwd chmod kill help rm cat echo bash more less find tar gcc su
寫出shell腳本的執(zhí)行方法
- source demo.sh
- bash demo.sh
- ./demo.sh
說(shuō)明Linux程序的執(zhí)行時(shí)間包括哪些部分
- 用戶態(tài)
- 內(nèi)核態(tài)
- 睡眠
shell腳本
- 寫一個(gè)腳本計(jì)算整數(shù)1至1000的和
#!/bin/bash
sum=0
for i in {1..1000}
do
sum=$[$i+$sum]
done
echo $sum
- 寫一個(gè)腳本計(jì)算整數(shù)1至1000的乘積
#!/bin/bash
var=1
for i in {1..1000}
do
var=$[$var*$i]
done
echo $var
linux自帶的庫(kù)函數(shù)有哪些類型
- 輸入輸出
- 數(shù)學(xué)運(yùn)算
- 字符串處理
- 時(shí)間日期
- 內(nèi)存分配
- 多線程并發(fā)
- 等
列出linux操作系統(tǒng)中文件的類型
- 常規(guī)文件
- 目錄文件
- 字符設(shè)備文件
- 塊設(shè)備文件
- 管道文件
- 符號(hào)鏈接文件
- 套接字文件
寫出linux系統(tǒng)向進(jìn)程發(fā)送信號(hào)的幾種機(jī)制
- 用/bin/kill發(fā)送信號(hào)
- 從鍵盤發(fā)送信號(hào)
- 用kill和raise函數(shù)發(fā)送信號(hào)
- 用alarm函數(shù)發(fā)送信號(hào)
簡(jiǎn)述應(yīng)用程序編程接口
列出與文件I/O操作相關(guān)的應(yīng)用編程接口
- open (文件打開函數(shù))
要求內(nèi)核打開相應(yīng)的文件响巢、宣告想要訪問(wèn)I/O設(shè)備或文件
- lseek(改變文件位置函數(shù))
可以改變當(dāng)前文件的讀寫位置
- read/write(文件讀寫函數(shù))
向文件讀或?qū)憯?shù)據(jù)
- close(文件關(guān)閉函數(shù))
通知內(nèi)核關(guān)閉文件
列出進(jìn)程間通信的應(yīng)用編程接口
- mkfifo
創(chuàng)建管道的命令
- pipe
創(chuàng)建管道
- msgget
創(chuàng)建和訪問(wèn)消息隊(duì)列
- msgsnd
把消息添加到消息隊(duì)列中
- msgrcv
從消息隊(duì)列中獲取信息
- msgctl
消息隊(duì)列控制函數(shù)
- shmget
創(chuàng)建共享內(nèi)存
- shmat
訪問(wèn)共享內(nèi)存
- shmdt
將共享內(nèi)存從當(dāng)前進(jìn)程中分離
- shmctl
共享內(nèi)存控制函數(shù)
- semget
創(chuàng)建信號(hào)量
- semop
增加或價(jià)紹信號(hào)量
- semctl
信號(hào)量控制函數(shù)
論述
- 論述linux內(nèi)核用哪三個(gè)相關(guān)的數(shù)據(jù)結(jié)構(gòu)來(lái)表示打開的文件
v-node表罢吃、文件表、描述符表宴偿。v-node表:linux將打開文件的屬性信息保存在v-node中湘捎,所有v-node構(gòu)成v-node表。文件表:linux將打開文件信息存儲(chǔ)在文件對(duì)象中窄刘,所有文件對(duì)象構(gòu)成文件表窥妇。描述符表:存儲(chǔ)文件描述符,用于定位文件的位置都哭。
- 論述在linux多線程程序中有哪些變量類型秩伞、被映射到哪段地址空間、有幾個(gè)運(yùn)行實(shí)例
全局變量欺矫、本地自動(dòng)變量纱新、本地靜態(tài)變量。全局變量:被映射到進(jìn)程虛擬存儲(chǔ)器的可讀寫數(shù)據(jù)區(qū)域穆趴,僅有一個(gè)運(yùn)行實(shí)例脸爱。本地自動(dòng)變量:函數(shù)未調(diào)用時(shí)不分配內(nèi)存,調(diào)用時(shí)被映射到線程堆棧中未妹,可以擁有一個(gè)至多個(gè)運(yùn)行實(shí)例簿废。本地靜態(tài)變量:被映射到虛擬存儲(chǔ)器的可讀寫區(qū)域,僅有一個(gè)運(yùn)行實(shí)例络它。
畫圖描述及分析
-
畫圖說(shuō)明linux進(jìn)程虛擬地址空間結(jié)構(gòu)
-
畫出linux進(jìn)程族檬、linux內(nèi)核與系統(tǒng)調(diào)用間關(guān)系圖
-
畫圖說(shuō)明當(dāng)一個(gè)新的程序開始時(shí)用戶棧的典型組織結(jié)構(gòu)
分析進(jìn)程家族關(guān)系
- 說(shuō)明使用fork系統(tǒng)調(diào)用創(chuàng)建進(jìn)程的過(guò)程
- 系統(tǒng)創(chuàng)建子進(jìn)程PCB,內(nèi)容復(fù)制于父進(jìn)程PCB化戳,新分配PID
- 創(chuàng)建父進(jìn)程數(shù)據(jù)集的一個(gè)副本单料,保存于新分配的存儲(chǔ)器中,作為子進(jìn)程數(shù)據(jù)集
- 假設(shè)下面程序運(yùn)行時(shí)子進(jìn)程的pid是3000,父進(jìn)程的pid是2999.請(qǐng)寫程序運(yùn)行結(jié)果扫尖,并畫圖說(shuō)明父子進(jìn)程運(yùn)行時(shí)用戶地址空間變化情況
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<stdlib.h>
int glob=10;
int main(void){
int local;
pid_t pid;
local=8;
if((pid=fork())==0){
sleep(4);
}
else{
glob++;
local--;
sleep(10);
}
printf("pid=%d,glob=%d,local=%d\n",getpid(),glob,local);
exit(0);
}
- 結(jié)果
pid=3000,glob=10,local=8 //子進(jìn)程
pid=2999,glob=11,local=7 //父進(jìn)程- 說(shuō)明圖