![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 95
Hushrush
这个作者很懒,什么都没留下…
展开
-
操作系统实验·字符设备驱动程序
实验内容编写一个简单的字符设备驱动程序,该字符设备并不驱动特定的硬件, 而是用内核空间模拟字符设备,要求该字符设备包括以下几个基本操作,打开、读、写和释放,并编写测试程序用于测试所编写的字符设备驱动程序。在此基础上,编写程序实现对该字符设备的同步操作。相关知识设备驱动程序设备驱动程序是内核和硬件设备之间的接口,设备驱动程序屏蔽硬件细节,且设备被映射成特殊的文件进行处理。每个设备都对应一个文件名,在内核中也对应一个索引节点,应用程序可以通过设备的文件名来访问硬件设备。Linux 为文件和设备提供了一致原创 2021-12-10 23:09:15 · 10306 阅读 · 1 评论 -
动态模块和篡改系统调用
内核模块工作在内核空间(supervisor space),而应用程序工作在用户空间(user space)。内核模块是一个由多个回调函数组成的“被动”代码集合体,采用了“事件驱动模型”;而应用程序总是从头至尾的执行单个任务。内核模块不能调用C标准函数库(glibc库),只能调用linux内核导出的内核函数 内核模块在编程时必须考虑可重入性(reentrant),内核模块可使用的栈很小(一般只有4096字节) 。内核驱动模块的创建与加载创建动态模块源码 修改Makefile文件生成编译规则 编译创建的模原创 2021-12-10 23:08:06 · 1124 阅读 · 0 评论 -
操作系统实验·Linux进程通信与内存管理
预备知识Linux进程的数据结构在Linux中,进程用task_struct表示,所有进程被组织到以init_task为表头的双向链表中(见[include/linux/sched.h]SET_LINKS()宏),该链表是全系统唯一的。 系统维护一个名为task的数组,task包含指向系统所有进程的task_struct结构的指针,task数组默认值为512,Linux从系统内存分配一个task_struct结构并将其加入task数组。当前运行进程的结构用current指针指示。进程控制块PCBLi原创 2021-12-10 23:02:09 · 2290 阅读 · 0 评论 -
操作系统实验 进程调度
实验一 华为云上openEuler操作系统环境1. 实验要求进程相关编程实验a) 观察进程调度b) 观察进程调度中的全局变量改变c) 在子进程中调用system函数d) 在子进程中调用exec族函数在此实验中完成:(1)熟悉操作命令、编辑、编译、运行程序。完成操作系统原理课程教材P103作业 3.7 (采用图3-32所示的程序)的运行验证,多运行程序几次观察结果;去除wait后再观察结果并进行理论分析。(2)扩展图3-32的程序,添加一个全局变量并在父进程和子进程中对这个变量做不同操作,输原创 2021-12-10 22:58:05 · 1674 阅读 · 0 评论