OS
IT管家婆,软硬兼顾,服务无忧。
平头哥阿威
coding....
展开
-
Linux--进程信号
信号概念生活中的信号:红绿灯信号量与信号的区别:信号实际上是一个软中断,用于通知进程发生了某些事件实际上也可以算作进程间通讯方式之一。因为我们可以在一个进程中通过给另一个进程发送信号,另一个进程会对这个信号做出相对应的处理。kill这个命令,杀死一个进程并不是为了杀死进程而设计的,而是为了给某个指定进程发送一个信号信号生命周期:信号的产生——&原创 2018-11-20 18:32:11 · 270 阅读 · 0 评论 -
(Fastest IPC)共享内存
共享内存这里有涉及的mmap的知识下图为共享内存原理图因为共享内存是直接将申请来的一块物理内存映射到虚拟地址空间中,允许两个或多个进程共享,因此进行数据传输的时候相较于其它进程间通信方式,少了两步用户态与内核态数据拷贝的过程,因此共享内存是最快的进程间通信方式。创建共享内存int shmget(key_t key, size_t size, int shmflg);k...原创 2018-11-03 15:41:58 · 328 阅读 · 0 评论 -
管道
编写课堂代码,实现pipe/msgqueue/sems/shm相关代码,并总结在实际工作中可能会要求几个进程进行合作,这些进程之间就需要沟通交流,完成协作。因为进程的独立性,因此进程间的交流沟通将变的困难、复杂。进程间的方式:管道、消息队列、共享内存、信号量等。管道消息队列共享内存信号量练习ipcs -q/m/s于ipcrm -q/m/s的使用,并总结将二元信号量...原创 2019-06-17 23:24:10 · 323 阅读 · 0 评论 -
Linux--进程控制(上)
进程概念进控制之前,有必要对进程概念回顾一下。学习进程创建, 等待, 终止. 使用代码实现.进程创建fork()函数#include <unistd.h> pid_t fork(void);fork函数功能:在已存在的进程中创建一个新进程,新进程成为子进程,原进程称为父进程。函数返回值:原创 2018-09-23 23:17:36 · 196 阅读 · 0 评论 -
进程概念
调研task_struct结构体, 理解结构体中的各个字段的含义.课本概念:程序的⼀一个执⾏行实例,正在执⾏行的程序等 内核观点:担当分配系统资源(CPU时间,内存)的实体 进程:运行起来的程序,站在操作系统的角度看进程是PCB(进程控制块:每一个进程的描述都是一个结构体) Linux下的PCB有它专有的名字task_struct task_struct内容包括...原创 2018-09-04 23:38:04 · 201 阅读 · 0 评论 -
消息队列
消息队列system V 标准的进程间通信方式:消息队列:发送的是带有类型的数据块,实际上是操作系统在内核为我们创建的一个队列,每个进程都可以通过队列的标识符(key)打开这个队列。每一个进程都可以向队列中添加节点或获取节点来进行数据传输。这个队中的节点都有一个类型。如何传输数据:组织一个带有类型的的数据块,添加到队列中,其它的进程从队列中获取数据块,也就是说消息队列传输的是一个...原创 2019-01-13 09:19:43 · 403 阅读 · 0 评论 -
进程间关系和守护进程
- 进程组/作业/会话的关系- 守护进程进程间关系 进程组:一个或多个进程对象的集合 ctrl +c 这种操作针对的是前台进程组中的所有进程 , 一个终端中,前后台控制是通过作业和进程组完成的。 进程组中有一个进程是组长进程,进程组的id就等于组长id 进程组并不会随着组长进程的退出而退出,而是组中所有进程退出后才会退出作业...原创 2019-01-16 21:12:45 · 206 阅读 · 0 评论 -
进程控制(下)
编写自主shell#include<stdio.h>#include<unistd.h>#include<string.h>#include<stdlib.h>#include<errno.h>in原创 2019-01-13 09:56:16 · 266 阅读 · 0 评论 -
Linux信号量
信号量用于实现进程间的同步与互斥(进程/线程安全概念),保证进程间对临界资源的安全有序访问。多个进程同时操作一个临界资源的时候就需要通过同步与互斥机制来实现临界资源的安全访问同步:保证对临界资源访问的时序的可控性互斥:对临界资源同一时间的唯一访问性本质:具有一个等待队列的计数器(代表现在还有没有资源使用),当信号量没有资源可用时,这时候需要阻塞等待。同步:只有信号量资源计数...原创 2019-01-13 09:23:18 · 309 阅读 · 1 评论 -
僵尸进程和孤儿进程
1.程序的顺序执行顺序性:CPU按照指令顺序逐步执行。封闭性:程序在封闭环境执行,程序运行时独占全机资源,只有本程序能改变程序,结果不受外界影响。可再现性:只要程序的执行环境和初始条件相同,无论执行过程是否停顿,都会有相同的执行结果。2.前驱图前驱图(Precedence Graph)是一个有向无循环图(Directed Acyclic Graph),用于描述进程之间的前后关系。...原创 2019-05-20 15:13:36 · 133 阅读 · 0 评论 -
多线程编程
深度阅读课件,对比进程与线程的区别,并总结编写线程相关课堂代码,总结线程属性结合代码,深度理解线程的同步与互斥,学习生产者消费者模型及应用场景使用gdb调试多线程写一篇博客, 总结上述内容. 作业以链接形式提交(代码也是在博客中体现)....原创 2018-12-08 12:52:59 · 228 阅读 · 0 评论 -
Linux--线程安全(上)
多线程线程基础操作关于本篇博客的更多代码:GitHub链接- 线程的同步与互斥,学习生产者消费者模型及应用场景线程安全:生产者与消费者模型,读写者模型,同步与互斥的实现,互斥锁,条件变量,posix信号量,读写锁,自旋锁大部分情况,线程使⽤的数据都是局部变量,变量的地址空间在线程栈空间内,这种情况,变量归属单个线程,其他线程⽆法获得这种变量。但有时候,很多变量都需要在线程间共享,这样的...原创 2018-12-08 16:44:09 · 376 阅读 · 0 评论 -
Linux--线程安全(下)
文章目录条件变量Posix信号量2、信号量的操作(等待/通知)3、信号量的释放posix线程互斥实现条件变量需要一个条件:表示临界区有没有资源为什么条件变量要和互斥锁搭配使用?因为等待需要被唤醒,而被唤醒的前提条件就是条件已经满足,并且这个条件本身就是一个临界资源,因此改变条件的操作需要被保护。条件变量的初始化及销毁:int pthread_cond_destroy(pthread_...原创 2019-01-13 09:10:28 · 229 阅读 · 0 评论 -
setenv, export等环境变量相关的函数和命令
setenv, export等环境变量相关的函数和命令.echo: 显⽰示某个环境变量值export: 设置⼀一个新的环境变量env: 显示所有环境变量unset: 清除环境变量set: 显示本地定义的shell变量和环境变量下面我们来看看这几个函数:setenv/unsetenvint setenv(const char *name, const char *value,in...原创 2019-05-20 15:12:45 · 751 阅读 · 0 评论 -
使用Centos常见的问题
Linux卡顿缓解方案1、我使用的是在VMware上面跑的Centos7,Centos系统是免费的Linux系统。2、如果你的Linux系统特别卡顿,原因可能是因为你给Linux系统分配的内存太小而导致,Linux卡顿。解决方案:打开VMware的管理—>虚拟机设置----->内存,然后调整内存到合适大小。虚拟的Linux系统开启,找不到鼠标了 Ctrl Alt //...原创 2019-01-07 19:35:48 · 458 阅读 · 0 评论 -
Linux--最常见的命令详解
linux常用指令1、ls命令语法: ls [选项] [目录或文件]功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。常用选项——-a列出目录下的所有文件,包括以 . 开头的隐含文件。-d将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录-i输出文件的 i node节点的索引信息。 如 ls ...原创 2019-01-13 10:18:06 · 324 阅读 · 0 评论 -
文件操作(Linux系统调用)
open/read/write/close等文件相关系统调用接口,纵向对比fd与FILE结构体 int open(const char*pathname,int flags,mode_t mode);flags:标志选项: 必选项:(这三个选项冲突,只能选择其中一个) O_RDONLY 只读 O_WRONLY 只写 O_RDWR 读写 非必选...原创 2018-09-12 19:26:33 · 322 阅读 · 0 评论 -
Linux--软链接和硬链接
更多Linux文件系统知识:Linux文件系统-----基础IOLinux文件系统的认知1、Linux系统下一切皆文件。Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。2、Linux操作系统为了方便管理文件,将每一个文件描述成files_struct结构体==...原创 2018-12-17 18:28:37 · 426 阅读 · 0 评论 -
动态库和静态库
静态库静态库:一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中的这种库。程序编译一般需经预处理、编译、汇编和链接几个步骤。静态库特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。生成静态库静态库生成:将所有的***.o 文件打包在一起生成打包的命令:ar -cr lib*...原创 2018-12-18 14:08:33 · 275 阅读 · 0 评论 -
Ubuntu系统服务器配置(下)
文章目录六、MySql安装使用1、安装MySql`sudo apt-get install mysql-server`2、登陆mysql数据库命令:`mysql -u root -p`七、邮件服务--Postfix1、安装sudo apt-get install postfix2、配置postfix3、检查邮件服务,发送测试邮件八、SVN服务器搭建1、安装SVN服务2、创建svn数据库3、修改配置...原创 2019-01-14 18:19:57 · 824 阅读 · 0 评论 -
使用gdb调试注意事项
1、编译过程一定要加-g选项:因为在Linux系统下,默认生成的是release(不加调试信息)版本的可执行程序,如果不加-g,则不能调试。例如编译hello.c生成hello的debug版本;gcc -g hello.c -o hello2、在开启gdb调试不想看到那么一大堆版本信息可以加-q,例如调试hellogdb -q hello3、常用选项:run/r:执行程序到结束 co...原创 2019-01-13 09:28:36 · 557 阅读 · 0 评论 -
Ubuntu系统服务器配置(上)
NFS网络文件系统WEBTOMCATJAVAFTPSAMBAMYSQL邮件服务SVNWEBMINVNC原创 2018-10-30 12:48:57 · 1666 阅读 · 0 评论 -
简单易懂的----Vim配置
vim自行查找资料, 自行配置插件.360百科关于vim的解释: 原来写百科的也是IT大神 https://baike.so.com/doc/272525-288439.html 再看看下面这位大神: 在查阅了大佬的vim配置后,我自己也使用了大佬提供的vim配置文件,结果如图: http://www.cnblogs.com/ma6174/archive/2011/...原创 2018-09-02 17:32:57 · 717 阅读 · 0 评论 -
Ubuntu常见系统问题
Linux系统需要运行在虚拟机上,如果你硬盘空间足够大,想装双系统,那么也可以装双系统,Linux系统免费开源,你可以去系统官网下载最新正版系统,这里是Ubuntu官网下载页面,Linux系统版本有很多,比较流行的还有Centos等。上图是Ubuntu安装截图,耐心等待安装完成后,...原创 2018-09-18 21:55:42 · 317 阅读 · 0 评论 -
Centos系统中文设置
温馨提示:1、我使用的是在VMware上面跑的Centos7,Centos系统是免费的Linux系统。2、如果你的Linux系统特别卡顿,原因可能是因为你给Linux系统分配的内存太小而导致,Linux卡顿。解决方案:打开VMware的管理—>虚拟机设置----->内存,然后调整内存到合适大小。系统中文设置...原创 2018-12-14 23:45:24 · 1381 阅读 · 0 评论 -
认识Linux操作系统
os概念、定位:操作系统是管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。 我理解的操作系统:计算机的硬件系统无法直接被用户使用,而是需要操作系统这个桥梁实现软硬件交互,从而,方便快捷地使用计算机。LinuxLinux操作系统诞生于1991年,林纳斯托瓦兹(Linus Benedict Torvalds)编织了一种类Unix的小操作系统。 ...原创 2018-08-19 15:30:09 · 1238 阅读 · 1 评论