闲着……学学写写汇编(只贴代码)

assume cs:abc
abc segment
mov ax,0020h
mov ds,ax
mov cx,3fh
mov bx,0
s:mov [bx],bx
inc bx
loop s

mov ax,4c00h
int 21h
abc ends
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个简单的操作系统进程通信睡眠的理发师问题的代码示例: ```c #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<sys/wait.h> #include<sys/types.h> #include<sys/ipc.h> #include<sys/msg.h> //定义消息队列结构体 struct msgbuf { long mtype; char mtext[100]; }; //理发师进程函数 void barberProcess(int msgqid) { struct msgbuf msg; //理发师闲着,先阻塞等待顾客的到来 msgrcv(msgqid, &msg, sizeof(msg.mtext), 1, 0); printf("理发师掏出电推剪咔擦咔擦地为顾客理发...\n"); } //顾客进程函数 void customerProcess(int msgqid) { struct msgbuf msg; msg.mtype = 1; //顾客到来,先发消息给理发师 msgsnd(msgqid, &msg, sizeof(msg.mtext), 0); printf("有个顾客来了,希望理发师给我理发...\n"); //等待理发师理发完成并通知 msgrcv(msgqid, &msg, sizeof(msg.mtext), 2, 0); printf("理发师给我理完发了,我很满意!\n"); } int main() { int msgqid; //消息队列标识符 pid_t pid; //创建消息队列 msgqid = msgget(IPC_PRIVATE, 0644 | IPC_CREAT); if (msgqid == -1) { perror("msgget error"); exit(EXIT_FAILURE); } pid = fork(); if (pid == -1) { perror("fork error"); exit(EXIT_FAILURE); } else if (pid == 0) { //子进程是理发师进程 barberProcess(msgqid); } else { //父进程是顾客进程 customerProcess(msgqid); //顾客理完发后通知理发师 struct msgbuf msg; msg.mtype = 2; msgsnd(msgqid, &msg, sizeof(msg.mtext), 0); //等待理发师处理完毕 wait(NULL); //删除消息队列 msgctl(msgqid, IPC_RMID, NULL); } return 0; } ``` 上面这代码是一个用于解决理发师问题的简单示例,主要利用了操作系统提供的消息队列机制实现进程间通信,实现了顾客向理发师发起请求,等待理发师处理并返回结果的过程。当然,这只是一个简单的示例,实际上,理发师问题通常不是一个简单的问题,不同的场景和要求会有不同的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值