![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 80
LeetCode8023
这个作者很懒,什么都没留下…
展开
-
Linux进程管理之task_struct
大家都知道进程,可是知道linux是怎么管理其进程的吗?每一个进程都有一个进程描述符,具体是task_struct结构体存储相关的信息,在linux/sched.h文件里定义,那么我们先看看linux内核3.0版本的task_struct结构体的定义吧(删除了不必要的字段,只保留了重要的字段)。struct task_struct { //这个是进程的运行时状态,-1代表不原创 2016-06-07 19:24:32 · 410 阅读 · 0 评论 -
Linux信号
首先我们先来看看常用的信号都有那些说明:信号一共有62个,可能很多人都会像我一样被欺骗,实际上中间没有32,33信号。1-31好信号为普通信号,34-64为实时信号 接下里就让我们来了解一下信号的产生条件:1.用户在终端按下某些键时,终端驱动程序会发送信号给前台进程,例如Ctrl-C产生SIGINT信号,Ctrl-\产生SIGQUIT信号,Ctrl-Z产生SIG原创 2016-07-29 11:06:53 · 744 阅读 · 0 评论 -
可重入函数与线程安全
若一个程序或子程序可以“安全的被并行执行(Parallel computing)”,则称其为可重入(reentrant或re-entrant)的。即当该子程序正在运行时,可以再次进入并执行它(并行执行时,个别的执行结果,都符合设计时的预期)。可重入概念是在单线程操作系统的时代提出的。一个子程序的重入,可能由于自身原因,如执行了jmp或者call,类似于子程序的递归调用;或者由于硬件中断,UNIX系转载 2016-07-27 22:19:15 · 982 阅读 · 0 评论 -
Linux进程创建函数vfork简介
基础知识vfork和fork的区别和联系vfork用于创建一个新进程,而该新进程的目的是exec一个新程序。vfork与fork都创建一 个子进程,但它不将父进程的地址空间复制到子进程中,因为子进程会立即调用 exec,于是不会存访问该地址空间。相反,在子进程调用exec或exit之前,它在父进程的空间中运行,也就是说会更改父进程的数据段、栈和堆。另一个区别是vfork保证子进原创 2016-07-04 22:10:13 · 1172 阅读 · 0 评论 -
Linux进程通信(四)IPC共享内存
一、什么是共享内存进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间中去。系统V共享内存通过shmget获得或创建一个IPC共享内存区域,并返回相应的标识符。内核在保证shmget获得或创建一个共享内存区,初始化该共享内存区相应的shmid_kernel结构注同时,还将在特殊文件系统shm中,创建并打开一个同名文件原创 2016-07-25 15:54:43 · 771 阅读 · 0 评论 -
Linux进程通信(三)IPC信号
信号量的本质是一种数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。 当请求一个使用信号量来表示的资源时,进程需要先读取信号量的值来判断资源是否可用。大于0,资源可以请求,等于0,无资源可用,进程会进入睡眠状态直至资源可用。 当进程不再使用一个信号量控制原创 2016-07-25 11:58:11 · 898 阅读 · 0 评论 -
LInux 子进程创建函数fork简介
一、fork入门知识一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。调用成功时两个返回值1)父进程返回当前子进程pid(子进程的标识符)2)子进程返回0(找父进程使用getppid())调用失败返回-1。接下来就用一个简原创 2016-07-02 22:48:41 · 831 阅读 · 0 评论 -
Linux进程通信(二)IPC消息队列
一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度MSGMNI来限制消息队列的原创 2016-07-24 12:36:10 · 1110 阅读 · 0 评论 -
Linux进程通信(一)管道
管道:管道是进程间通信的主要手段之一。一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两个已经打开文件进行,它们分别代表管道的两端。管道是一种特殊的文件,它不属于某一种文件系统,而是一种独立的文件系统,有其自己的数据结构。根据管道的适用范围将其分为:无名管道和命名管道。● 无名管道主要用于父进程与子进程之间,或者两个兄弟进程之间。在linux系统中可以通原创 2016-07-19 10:20:53 · 1252 阅读 · 0 评论 -
操作系统中常见的进程调度算法
一、先来先服务(FCFS)和短作业(SJF)优先调度算法1.先来先服务(first-come first-sereved,FCFS)调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程原创 2016-06-05 16:53:39 · 1356 阅读 · 0 评论 -
死锁的产生原因和解除
死锁的定义如果一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发的时间,那么该组进程是死锁的。产生死锁的必要条件互斥条件:简单的说就是进程抢夺的资源必须是临界资源,一段时间内,该资源只能同时被一个进程所占有请求和保持条件:当一个进程持有了一个(或者更多)资源,申请另外的资源的时候发现申请的资源被其他进程所持有,当前进程阻塞,但不会是放自己所持有的资源不可抢占条件原创 2016-07-29 15:38:06 · 5357 阅读 · 2 评论