欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > windows >内容正文

windows

操作系统都是用c语言写的吗,用C语言写关于操作系统的一个问题。

发布时间:2025/3/20 windows 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 操作系统都是用c语言写的吗,用C语言写关于操作系统的一个问题。 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

怎么将软中断与共享内存相结合?

现贴代码:

软中断:

#include

#include

#include

#include

int wait_mark;

void waiting( ) //自定义waiting 函数与 wait(0) 作用不同,作用是是通过循环使子进程停止。

{

while(wait_mark!=0);

}

void stop( ) //调用此函数时,使wait_mark=0,结束waiting 函数中的循环,使子进程继续执行

{

wait_mark=0;

}

int main()

{

int p1,p2;

while((p1=fork( ))==-1);

if(p1>0)

{

while((p2=fork( ))==-1);

if(p2>0) //在父进程中

{

printf("parent\n");

kill(p1,16); //发送信号16

kill(p2,17); //发送信号17

wait(0); //等待 p1、p2 中的某个子进程结束

wait(0); //等待 p1、p2 中的某个子进程结束

printf("parent process id killed! \n");

exit(0);

}

else /* p2==0*/

{

printf("p2\n");

wait_mark=1;

signal(17,stop); //将信号17和函数 stop 关联起来

waiting( ); //循环,知道父进程发送信号17时,调用stop后继续执行

printf("child p2 is killed by parent! \n");

exit(0);

}

}

else/*p1==0*/

{

printf("p1\n");

wait_mark=1;

signal(16,stop);

waiting( );

printf("child p1 is killed by parent! \n");

exit(0);

}

共享内存:

#include

#include

#include

#include

#define SHMKEY 75

int shmid,i;

int *addr;

void SERVER( );

void CLIENT( );

int main()

{

while((i=fork())==-1); //创建一个子进程执行 SERVER(),即一个子进程发送消息

if(!i)SERVER( );

while((i=fork())==-1); //创建另一个子进程执行CLIENT(),即一个子进程接收消息 if(!i) CLIENT( );

wait(0); /*父进程阻塞,直到子进程结束*/

wait(0);

}

void SERVER( ) //服务器端

{

shmid=shmget(SHMKEY,1024,0777|IPC_CREAT); //创建共享区,并先取得id

addr=shmat(shmid,0,0); //通过id获得起始地址(虚地址)

do

{

*addr=-1; //取走数据

while(*addr==-1); //停止,等待客户端发送数据

printf("(server)received ," );

printf("server *addr %d\n", *addr);

}

while(*addr);

shmctl(shmid,IPC_RMID,0); //删除共享区

exit(0);

}

void CLIENT( ) //客户端

{

int i;

shmid=shmget(SHMKEY,1024,0777); //打开共享区

addr=shmat(shmid,0,0); //指向第一个单元

for(i=5; i>=0; i--)

{

while(*addr!=-1); //服务端没有取走,反复等待。

printf("(client)sent, ");

*addr=i; //实现同步

printf("client i: %d\n",i);

}

exit(0);

}

求大佬们指教!!!

总结

以上是生活随笔为你收集整理的操作系统都是用c语言写的吗,用C语言写关于操作系统的一个问题。的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。