![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
小帅哥gaoyi
上帝保佑,大家晚安!https://github.com/gaoyi221119
展开
-
应用程序、内核、驱动的关系
应用程序与库函数、内核、驱动之间的关系 应用程序、库、内核、驱动程序的关系:应用程序调用应用程序函数库完成功能、应用程序以文件形式访问各种资源、应用程序函数库、部分函数直接完成功能、部分函数通过系统调用。由内核完成内核处理系统调用。 调用设备驱动程序,设备驱动直接与硬件通信。 它们之间的关系如下图所示:设备类型: 常见的设备有三类:字符设备、块设备、网络设备。 字符设备:对字符设备发出读/原创 2017-03-12 14:14:35 · 1087 阅读 · 0 评论 -
undefined reference to symbol 'floor@@GLIBC_2.0'
编译程序的时候出现错误:/my/gtk/calculator$ gcc -o main main.c pkg-config --libs --cflags gtk+-2.0 /usr/bin/ld: /tmp/ccUS8pua.o: undefined reference to symbol ‘floor@@GLIBC_2.0’ //lib/i386-Linux-gnu/libm.so.6:原创 2017-08-16 10:43:06 · 2288 阅读 · 0 评论 -
Linux 与 BSD 有什么不同?
Linux 与 BSD 有什么不同?原创 2016-12-03 21:15:16 · 700 阅读 · 0 评论 -
进程间通信 IPC
一.进程间通信主要有以下几种方式:管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。有名管道(named pipe):有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。消息队列(message queue):消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道原创 2017-08-19 11:14:38 · 218 阅读 · 0 评论 -
进程同步和线程同步
怎样同步多个线程或多个进程的活动。为允许在线程或进程间共享数据,同步是必需的。互斥锁和条件变量是同步的基本组成部分。互斥锁和条件变量出自POSIX.1线程标准,它们总是可用来同步一个进程内的各个线程的。如果一个互斥锁或条件变量存放在多个进程间共享的某个内存中,那么POSIX还允许它用于这些进程间的同步。互斥锁、条件变量、读写锁、信号量均可用于进程、线程的同步。多线程同步方法1)互斥锁 互斥锁是最基原创 2017-09-17 11:07:46 · 2383 阅读 · 0 评论 -
Linux多进程和多线程的优缺点
教科书上最经典的一句话是“进程是操作系统分配的最小单位,线程是CPU调度的最小单位”。多线程的优点:1)它是一种非常”节俭”的多任务操作方式。在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种”昂贵”的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启原创 2017-09-15 17:54:05 · 2522 阅读 · 0 评论 -
进程之间的同步方式有哪些
同步和通讯的目的是一样的,实现进程间数据共享,同步只是为了做到处理协同。共享内存在Win9X平台上是有的,在NT内核以后就没有这一说了,因为进程地址空间不再有共用部分。Linux :通信就是说进程之间传递数据。常见的方法有 pipe(管道),FIFO(命名管道),socket(套接字),SysVIPC 的 shm(共享内存)、msg queue(消息队列)。同步的意思是说,让不同进程能够在同原创 2017-08-19 11:08:24 · 2188 阅读 · 0 评论 -
linux中的分段和分页
前一段时间看了《深入理解Linux内核》对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看法和认识。我比较喜欢搞清楚一个技术本身的发展历程,简而言之就是这个技术是怎么发展而来的,在这个技术之前存在哪些技术,这些技术有哪些特点,为什么会被目前的技术所取代,而目前的技术又解决了之前的技术所存在的哪些问题。弄原创 2017-07-24 10:21:09 · 386 阅读 · 0 评论 -
消息队列通信方式为什么在内核和用户空间进行四次的数据拷贝
消息队列和管道基本上都是4次拷贝,而共享内存(mmap, shmget)只有两次。4次:1,由用户空间的buf中将数据拷贝到内核中。2,内核将数据拷贝到内存中。3,内存到内核。4,内核到用户空间的buf.2次: 1,用户空间到内存。 2,内存到用户空间。消息队列和管道都是内核对象,所执行的操作也都是系统调用,而这些数据最终是要存储在内存中执行的。因此不可避免的要经过4次数据的拷贝。但是共享内存不同,原创 2017-07-24 09:37:20 · 4834 阅读 · 2 评论 -
同步异步以及阻塞和非阻塞的区别
一、同步与异步的区别: 同步:一个服务的完成需要依赖其他服务时,只有等待被依赖的服务完成后,才算完成,这是一种可靠的服务序列。要么成功都成功,失败都失败,服务的状态可以保持一致 异步:一个服务的完成需要依赖其他服务时,只通知其他依赖服务开始执行,而不需要等待被依赖的服务完成,此时该服务就算完成了。被依赖的服务是否最终完成无法确定,一次它是一个不可靠的服务序列。消息通知中的原创 2017-07-18 19:18:10 · 274 阅读 · 0 评论 -
Linux 之内核态与用户态
**用户态:**Ring3运行于用户态的代码则要受到处理器的诸多检查,它们只能访问映射其地址空间的页表项中规定的在用户态下可访问页面的虚拟地址,且只能对任务状态段(TSS)中I/O许可位图(I/O Permission Bitmap)中规定的可访问端口进行直接访问。**内核态:**Ring0在处理器的存储保护中,核心态,或者特权态(与之相对应的是用户态),是操作系统内核所运行的模式。运行在该模式的代原创 2017-07-18 09:36:18 · 479 阅读 · 0 评论 -
Linux 进程状态转换
1. Linux进程状态有:TASK_RUNNING : 就绪态或者运行态,进程就绪可以运行,但是不一定正在占有CPU,对应进程状态的RTASK_INTERRUPTIBLE:睡眠态,但是进程处于浅度睡眠,可以响应信号,一般是进程主动sleep进入的状态,对应进程状态STASK_UNINTERRUPTIBLE:睡眠态,深度睡眠,不响应信号,典型场景是进程获取信号量阻塞,对应进程状态DTASK_ZOMB原创 2017-07-17 14:59:14 · 451 阅读 · 0 评论 -
CentOS安装gtk2.0
本人初学者,在安装gtk2.0时遇到了不少问题,最后找到了成功的安装指令为安装必要文件包:yum install libgnomeui-devel安装必要组件:yum install gtk2 gtk2-devel gtk2-devel-docs安装可选组件:yum install gnome-devel gnome-devel-docs可使用以下代码检测(已测试通过)#include <gtk/g原创 2017-07-20 14:02:01 · 2518 阅读 · 0 评论 -
ioctl()函数详解
我这里说的ioctl函数是指驱动程序里的,因为我不知道还有没有别的场合用到了它,所以就规定了我们讨论的范围。写这篇文章是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。 一、 什么是ioctl ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个原创 2017-03-15 14:51:56 · 451 阅读 · 0 评论 -
用户模式和内核模式
运行 Windows 的计算机中的处理器有两个不同模式:“用户式”和“内核模式”。根据处理器上运行的代码的类型,处理器在两个模式之间切换。应用程序在用户模式下运行,核心操作系统组件在内核模式下运行。多个驱动程序在内核模式下运行时,某些驱动程序可能在用户模式下运行。当启动用户模式的应用程序时,Windows 会为该应用程序创建“进程”。进程为应用程序提供专用的“虚拟地址空间”和专用的“句柄表格”。由于原创 2017-03-12 21:52:23 · 584 阅读 · 0 评论 -
VMWare 复制虚拟机系统后,模块“Disk”启动失败
1、找到虚拟机所在的目录将 .vmx文件打开将文件vmci0.present = “TRUE” 改为 vmci0.present = “FALSE”2、删除以.lck为后缀名的文件3、重新打开虚拟机原创 2019-03-06 17:31:44 · 589 阅读 · 0 评论