linux操作系统实验
⑴ 操作系统管理linux 系统进程实验报告
什么是进程
比如:windows上安装的QQ,我们会将其称为QQ程序,那么当QQ运行之后,在任务管理器中,我们可以看到QQ程序在运行着,此时,我们称其为:QQ进程。
言简意赅总结:当我们运行一个程序,那么我们将该程序叫进程
注意:
1.当程序运行为进程后,系统会为该进程分配内存,以及运行的身份和权限。
2.在进程运行的过程中,服务器上回有各种状态来表示当前进程的指标信息。
进程是已启动的可执行程序的运行实例,进程有以下组成部分:
分配内存, 已分配内存的地址空间
安全属性, 进程的运行身份和权限
进程代码, 运行一个或多个的线程
进程状态, 进程运行后的多种状态
静态程序, 二进制文件, 静态/bin/ls, /usr/sbin/sshd
动态进程, 程序运行的过程, 有生命周期及运行状态
进程的运行环境,包括以下几个部分:
局部和全局变量
当前的调度上下文
分配给进程使用的系统资源,例如文件描述符、网络端口等
给进程分配对应的pid,ppid
程序和进程的区别
1.程序是数据和指令的集合,是一个静态的概念,比如/bin/ls、/bin/cp等二进制文件,同事程序可以长期存在系统中。
2.进程是一个程序的运行过程,是一个动态概念,进程是存在生命周期概念的,也就是说进程会随着程序的终止而销毁,不会永远在系统中存在。
进程的生命周期
程序运行时进程的状态关系:
1.当父进程接收到任务调度时,会通过fork派生子进程来处理,那么子进程会集成父进程的衣钵。
2.子进程在处理任务代码时,父进程会进入等待的状态...
3.如果子进程在处理任务过程中,父进程退出了,子进程没有退出,那么这些子进程就没有父进程来管理了,就变成了僵尸进程。
4.每个进程都会有自己的PID号,(process id)子进程则PPID
⑵ 操作系统进程实验linux下C实现 POSIX 下进程控制的实验程序 下面有不完整的代码,求补充 实在没法儿了..
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
//#include <ctype.h>
#define MAX_CHILD_NUMBER 10;
int proc_number=0;
void do_sth();
int main(int argc, char* argv[]){
int child_proc_number=MAX_CHILD_NUMBER;
int i, id;
pid_t child_pid;
pid_t pid[10]={0};
// if(argc>1){
// child_proc_number=atoi(argv[1]);
// child_proc_number=(child_proc_number>10)?10:child_proc_number;
// }
//创建进程
for (i=0; i<child_proc_number; i++){
if( (child_pid=fork())==0 ){
proc_number=i;
do_sth();
}else{
pid[i]=child_pid;
}
}
//KILL PROC
if(child_pid!=0){
printf("the pid you want to kill(q to quit): ");
while(scanf("%d",&id)){
if (id==113)
break;
else
kill(id,SIGKILL);
}
}
//KILL ALL
kill(0,SIGKILL);
return 0;
}
void do_sth(){
for(;;){
printf("this it process No.%d and its pid is %d.\n",proc_number,getpid());
sleep(2);//主动阻塞两秒钟
}
}
⑶ linux操作系统的实验怎么做
你这相当于叫人写个shell...
具体实现思路应该有两种
A.用system函数调dos命令来实现,这其实是取巧了。
B.完全自己真正写个命令解释程序。这可以分成三步来实现
第一步
要自己设计一个内部命令表,按你的要求,采用模块化的方法,这个表就用结构体来做
struct cmd_table{
char * cmd_name ; //内部命令名字符串
void ( * cmd_func) (void) ;//指向对应于内部命令函数的指针
}
commands [ ] = {
" DIR" ,dir ,
" COP" ,cop ,
" ERA" ,era ,
" DIS" ,dis ,
"END",end,
} ;
//要达到真正的面向对象模块化编程, 可以再定义个维数宏,来让搜索内部命令表时能确切
知道内部命令表中内部命令的数目。
# define dim ( x)(sizeof(x)/sizeof (x [0]))
第二步
获取键盘命令
void get cmdln (char * cmd_buffer)
{
show_prompt() ; /*显示命令提示符*/
get_cmd (cmd_b uffer) ; /*获取键盘命令行并进行大小写*/
take_para (cmd_buffer) ; /*分离出命令名及参数*/
}
呵呵,抱歉,我要赶飞机去了,下面的我以后在写。。。。。
预祝国庆节快乐!!!!
⑷ 求解关于linux操作系统的代码怎么写 网络管理实验 1.新建一个文件test.c 查看其权限
touch test.c
ls -l test.c
chmod 444 test.c
vi test.c
#include<stdio.h>
main()
{
printf("HelloWorld! ");
}cc -o test test.c
ls -l
chmod 666 test
./test
chmod +x test
./test
chmod 742 test.c
vi /etc/sysconfig/network-scripts/ifcfg-eth0
自己配吧
找个地址ping就是了
⑸ Linux进程通信实验报告
一、实验目的:
进一步认识并发(并行)执行的概念,区别顺序执行和并发(并行)执行。
分析进程争用临界资源的现象,学习解决进程排斥的方法。
二、实验环境:
一台至少具有256MB内存的计算机,并安装Red Hat Linux 9的Linux操作系统。
三、实验内容:
1. 预备知识
fork函数调用:创建一个新进程。
getpid函数调用:获得一个进程的pid。
lockf系统的调用:在进程同步控制中为进程加锁。
2. 编写一段程序(程序名为fork1.c),使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”,子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。
(1)进入Linux操作系统。
(2)打开终端。进入vi编译器。
(3)输入源程序代码。
(4)按Esc键,进入命令模式后,输入“: wq文件名”就可以运行该程序了。
⑹ 小弟有一个Linux操作系统课程留的实验:写一个mygetcwd()函数,要求显示当前工作目录,不
相关函数:get_current_dir_name, getwd, chdir
头文件:#include <unistd.h>
定义函数:char * getcwd(char * buf, size_t size);
函数说明:getcwd()会将当前的工作目录绝对路径复制到参数buf 所指的内存空间,参数size 为buf 的空间大小。
注:
1、在调用此函数时,buf 所指的内存空间要足够大。若工作目录绝对路径的字符串长度超过参数size 大小,则返回NULL,errno 的值则为ERANGE。
2、倘若参数buf 为NULL,getcwd()会依参数size 的大小自动配置内存(使用malloc()),如果参数size 也为0,则getcwd()会依工作目录绝对路径的字符串程度来决定所配置的内存大小,进程可以在使用完次字符串后利用free()来释放此空间。
返回值:执行成功则将结果复制到参数buf 所指的内存空间, 或是返回自动配置的字符串指针. 失败返回NULL,错误代码存于errno.
范例
#include <unistd.h>
main()
{
char buf[80];
getcwd(buf, sizeof(buf));
printf("current working directory : %s\n", buf);
}
执行:
current working directory :/tmp
⑺ Linux 操作系统的启动与初始化实验中gdb 输入c后停在continuing 不往下运行是怎么
你是否调用了阻塞的socket函数?比如recv,没有收到数据之前,线程是不会从该函数中返回的,也就是被阻塞了
⑻ linux操作系统的实验问题……求具体应该输入的命令,用普通的命令就行只是菜鸟的提问没有什么深意的
1.echo $PS1
2.PS1='Linux->'
3.PS1='\h'\$
4.PS1='\h \# '\$
5.PS1=:/\w
6修改用户根目录下的.bashrc
⑼ 操作系统实验为什么要在linux中进行而不在windos中进行编程
因为linux是开源软件,可以自由使用
而windows 是商业软件,有版权保护,不充允许进行实验研究
⑽ Unix/Solaris/Linux操作系统 上机实验 很简单的命令~ 求助
1.
ln name name.ln1
ln name name.ln2
肯定受影响!
2.
ls -l name*
rm name
没有!
3. cd /
ln -dfs /usr/bin bin.link
ls -l bin.link
ls -ld /usr/bin
ls -l /usr
cd home
find mode
ls -l mode
4. cd /
mkdir wj
cd wj
cp /home/mode ./mode.cp
ls -l mode.cp
5. chmod -c -w mode.cp
文件不可读
chmod -c -rw mode.cp
文件可读写,组用户可读写
8.
肯定不行,没权限!
9。有root权限就行
10。不行
没写的就依葫芦画瓢!