system V下3中进程同步:共享内存(shared memory),信号量(semaphore)和消息队列(message queue) 调试了下午,终于调通啦! 运行./c.out 输出共享内存中的内容,运行 ./c.out arg1 对共享内存区进行修改,shell下输入ipcs -m 可以查看共享内存情况 ,-s 是信号量,-q 是消息队列 下面先贴上main的代码: #include <signal.h> //head file of define signal #include…
一 共享内存 共享内存是由IPC为进程创建的一个特殊的地址范围,它将出现在该进程的地址空间中.其他进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址.如果某个进程向共享内存写入了数据,所做的改动将立刻被可以访问同一段共享内存的任何其他进程看到. 二 相关函数 #include <sys/shm.h>//shmget创建共享内存 int shmget(key_t key, //为共享内存段命名 size_t size, //以字节为单位指定需要共享的内存容量…
void * kmalloc(size_t size, gfp_t gfp_mask); kmalloc()第一个参数是要分配的块的大小,第一个参数为分配标志,用于控制kmalloc()的行为. kmalloc()的底层依赖于__get_free_pages()来实现,分配标志的前缀GFP正好是这个底层函数的缩写. GFP_ATOMIC:在中断处理函数.底半部.tasklet.定时器处理函数以及URB完成函数中,在调用者持有自旋锁或读写锁时以及当驱动将current->state修改为非TASK…
Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并和标准I/O进行对比. 文件描述符 内核通过文件描述符引用打开的文件,它是一个非负整数.按惯例,shell中使用0与进程的标准输入关联,1与标准输出关联,2与标准错误输出关联.依照POSIX,这些幻数应替换为符号常量 STDIN_FILENO . STDOUT_FILENO .STDERR_FILE…
原创文章,转载请注明:Linux内核学习笔记-1.简介和入门 By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert Love,陈莉君等译. 1.操作系统和内核简介 Linux内核是自由公开软件,使用GNU的General Public License(GPL)第二版作为限制条款.大多数软件许可证决意剥夺你共享和修改软件的自由.相比之下,GNU通用公共许可证试图保证你共享和修改自由软件的自由. 通常一个内核负责响应中…
Linux内核学习笔记二——进程   一 进程与线程 进程就是处于执行期的程序,包含了独立地址空间,多个执行线程等资源. 线程是进程中活动的对象,每个线程都拥有独立的程序计数器.进程栈和一组进程寄存器. 内核调度的对象是线程而不是进程.对Linux而言,线程是特殊的进程. 二 进程描述符及任务结构 内核使用双向循环链表的任务队列来存放进程,使用结构体task_struct来描述进程所有信息. 1 进程描述符task_struct struct task_struct {}结构体相当大,大约1.7…
内存管理 内存管理一直是一个不易处理的问题.开发人员必须考虑分配回收的方式和时机,针对堆和栈做不同的优化处理,等等.内存管理的核心是动态分配的对象必须保证在使用完成后有效地释放内存,即管理对象的生命周期.因为C++是一个较为底层的语言,其设计上不包括不论什么智能管理内存的机制.一个对象在使用完成后必须被回收.然而在复杂的程序中.对象全部权在不同程序片段间传递或共享,使得确定回收的时机十分困难,因此内存管理成为了程序猿十分头疼的问题. 还有一方面,过于零散的对象分配回收可能导致堆中的内存碎片化,减…
目录 尚硅谷韩顺平Linux教程学习笔记 写在前面 虚拟机 Linux目录结构 远程登录Linux系统 vi和vim编辑器 关机.重启和用户登录注销 用户管理 实用指令 组管理和权限管理 定时任务调度 Linux磁盘分区.挂载 网络配置 进程管理 RPM YUM 搭建JAVAEE环境 安装Tomcat 安装Eclipse 安装mysql Shell编程 Shell编程综合案例 Python定制篇 开发平台Ubuntu 尚硅谷韩顺平Linux教程学习笔记 写在前面 学习链接:尚硅谷韩顺平Linux…
原创文章,转载请注明:Linux内核学习笔记-2.进程管理) By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert Love,陈莉君等译. 1.进程 进程是正在执行的程序代码的实时结果,包含打开的文件.挂起的信号等.线程是进程中的活动的对象,内核调度的对象是线程.在Linux内核对线程与进程并不加以区分,线程只不过是一种特殊的进程. 2.进程描述符 内核把进程的信息存放在task list的双向循环链表中,链表中的…
王剑桥Linux内核学习笔记 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 计算机是如何工作的 个人理解:计算机就是通过和用户进行交互,执行用户的指令,这些指令存放在内存中,通过寄存器存储,堆栈变化,来一步步顺序执行. 一.存储程序计算机工作模型 1.冯诺依曼体系结构-存储程序计算机 硬件角度(主板):通过cpu中IP寄存器指向一个代码段运行某些指令: 寄存区,指向内存的某一块区域(代码段) IP:16位cp…