
操作系统
文章平均质量分 60
Ferlan
天下大事,必作于细!
展开
-
僵尸进程,孤儿进程及代码实现
僵尸进程父进程调用fork()创建子进程,通常情况下,子进程运行时,父进程调用wait()或waitpid()函数等待子进程,子进程退出后,父进程接收到子进程的退出码,并释放子进程资源。 但如果父进程没有接收到子进程的退出码,那子进程的资源便无法回收,子进程将会以终止状态保持在进程表中,直到父进程读取它的退出码,这种子进程也就叫僵尸进程。僵尸进程的危害1.僵尸进程虽然已经不再工作,但...原创 2018-09-11 18:40:44 · 701 阅读 · 0 评论 -
linux--守护进程
什么是守护进程守护进程也称精灵进程(Daemon),是运⾏在后台的⼀种特殊进程。它独⽴于控制终端并且周期性地执⾏某种任务或等待处理某些发⽣的事件。守护进程是⼀种很有⽤的进程。 Linux的⼤多数服务器就是⽤守护进程实现的。⽐如, ftp服务器, ssh服务器, Web服务器httpd等。同时,守护进程完成许多系统任务。⽐如,作业规划进程crond等。Linux系统启动时会启动很多系统服务进程,...原创 2019-01-22 10:00:49 · 267 阅读 · 0 评论 -
线程(二)线程的同步与互斥
线程的同步与互斥生产者与消费者模型线程的互斥互斥量(也叫互斥锁)互斥量使用步骤互斥量接口死锁线程互斥代码演示线程的同步为什么要线程同步?竞态条件条件变量条件变量的定义条件变量的接口条件变量的简单场景为什么要给pthread_cond_wait传互斥量?pthread_cond_wait内部为什么要执行解锁?代码演示生产者与消费者模型在讲同步与互斥之前,我们要来先讲一讲生产者与消费者模型。生产...原创 2019-01-21 09:55:11 · 360 阅读 · 0 评论 -
linux--进程信号详解
进程信号详解1.引入信号的概念2.信号的生命周期3.信号的产生4.信号的注册4.1可靠信号与不可靠信号5.信号的注销6.信号的处理6.1 cure-dump1.引入信号的概念信号是软件中断。它给我们提供了一种能够异步处理事件的方法。事实上,进程并不知道信号何时到来。比如,当我们的某一个进程失去控制,而我们想让他终止运行时,通常使用Ctrl+c的方式使进程强制终止,Ctrl+c虽然由硬件产生,...原创 2019-01-19 19:05:58 · 461 阅读 · 0 评论 -
线程(一)线程概念,优缺点,基本操作
线程什么是线程线程与进程线程的优缺点线程id与进程id关于使用posix线程库的说明线程的创建线程的退出线程的等待与分离什么是线程线程是进程中的一条执行流,也是计算机调度的基本单位。在linux平台下,线程是由进程模拟实现的,故该线程也叫做轻量级进程,且线程被操作系统用pcb描述并管理。线程与进程一个进程中至少有一个线程,也可以有多个线程,多线程是共享同一个进程地址空间的。进程是...原创 2019-01-19 17:11:15 · 740 阅读 · 0 评论 -
linux--消息队列
消息队列 Sysetm V 什么是消息队列消息队列的应用函数利用消息队列实现进程间通信msgqueue_c.cmsgqueue_s.c消息队列的不足什么是消息队列消息队列实际上是操作系统在内核为我们创建的一个队列.关于组织一个带有类型的数据块,添加到队列中,其他的进程从队列中获取数据块.也就是说消息队列传输的是一个个带有类型的数据块.消息队列是一个全双工通信,两个进程都可读可写.在命令行...原创 2018-11-17 16:51:27 · 338 阅读 · 0 评论 -
linux--信号量
信号量什么是信号量?信号量是进程间通信方式之一,用于实现进程间的同步与互斥。同步与互斥同步:保证对临界资源访问的时序可控性,两个或两个以上的进程或线程在运行过程中协同步调,按预定的先后次序运行.比如只有超市进货之后我才能去消费。互斥:保证同一时间 对临界资源访问的唯一访问性。当一个进程再对临界资源进行操作时,其他的进程不能再操作该资源。比如我在超市要买一包方便面(方便面已经在我手上)...原创 2018-11-24 10:06:15 · 570 阅读 · 0 评论 -
linux--管道
管道什么是管道匿名管道代码实现管道读写规则匿名管道的特点什么是管道管道本质上是内核中的一段缓冲区,它可以连接两个进程,进行数据流的传输。匿名管道匿名管道字如其名是匿名的。他不可见于文件系统,所以只能用于具有亲缘关系的进程间通信。#include <unistd.h>功能:创建⼀⽆名管道原型int pipe(int fd[2]);参数fd:⽂件描述符数组,其中fd[0...原创 2018-11-17 11:15:51 · 221 阅读 · 0 评论 -
linux--共享内存
共享内存什么是共享内存?共享内存图解为什么说共享内存是最快的IPC?(重点)共享内存代码实现什么是共享内存?共享内存图解为什么说共享内存是最快的IPC?(重点)因为共享内存是直接将同一块物理内存映射到2个进程的虚拟地址空间当中,所以进行的数据传输的时候相较于其他通信方式,少了两步用户态到内核态数据拷贝的过程,因此称,共享内存是最快的进程间通信方式.(像管道/消息队列等方式都是先将数据从...原创 2018-11-19 16:40:54 · 264 阅读 · 0 评论 -
Linux--文件描述符,文件重定向
文件描述符什么是文件描述符?文件描述符与文件流指针的关系什么是文件描述符?文件描述符与文件流指针的关系原创 2018-10-31 22:02:47 · 650 阅读 · 0 评论 -
linux基础I/O函数
open: 打开文件 #include<fcntl.h> int open(const char *pathname,int flags,mode_t mode); 解释: pathname:要打开的文件名称 flags:标志选项 必选项:(相互冲突,只能3选1) ...原创 2018-10-23 19:42:56 · 336 阅读 · 0 评论 -
虚拟地址空间解析
 在进入正题前先来谈谈操作系统内存管理机制的发展历程,了解这些有利于我们更好的理解目前操作系统的内存管理机制。一 早期的内存分配机制在 早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运...转载 2018-08-18 14:01:51 · 676 阅读 · 0 评论 -
linux下查看进程信息命令 ps -ef 与ps -aux的区别
Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux最初用到Unix Style中,而ps -ef被用在System...原创 2018-09-11 18:43:27 · 652 阅读 · 0 评论 -
制作一个微型shell
1 /* 模拟shell写一个咱们自己的微型myshell 2 * 功能:myshell> ls 3 * 能够执行各种命令 4 * 5 */ 6 #include <stdio.h> 7 #include <unistd.h> 8原创 2018-09-20 09:48:39 · 611 阅读 · 0 评论 -
进程程序替换
引言:父进程通过fork()函数创建一个子进程,子进程将和父进程运行相同的代码,但创建子进程的大多情况,是希望能够运行一些其他的程序,这时候就需要用到进程程序替换。exec函数族想要实现进程程序替换就要用到exec函数族,exec函数族内有6个函数 #include <unistd.h> int execl(const char *path, const char *arg,...原创 2018-09-19 23:14:14 · 446 阅读 · 0 评论 -
task_struct结构体及其内部各字段的含义
1. 按内核的角度来看:进程是担当分配系统资源(CPU时间,内存)的实体 2. 进程是程序的一个执行实例 3. 通俗的讲,进程是正在运行的程序原创 2018-09-10 19:55:16 · 3031 阅读 · 1 评论 -
进程的创建,终止,等待
进程创建进程的创建主要是通过调用fork( )函数和vfork( )函数来实现的。fork()fork()函数的基本形式如下:#include<unistd.h>pid_t fork(void){}pid_t实际上就是short类型,这个在sys/types.h中定义:typed原创 2018-09-11 20:48:22 · 424 阅读 · 0 评论