系统编程
h490516509
这个作者很懒,什么都没留下…
展开
-
Linux--进程组、会话、守护进程
转:http://www.cnblogs.com/forstudy/archive/2012/04/03/2427683.htmlint setpgid(pid_t pid, pid_t pgid);pid_t getpgid(pid_t pid)pid_t getpgrp(void)//用来取得目前进程所属的组识别码。此函数相当于调用getpgid(0);返回目前进程所属的组识别码。...转载 2018-12-19 14:57:16 · 296 阅读 · 0 评论 -
进程的挂起、阻塞和睡眠
转:https://www.cnblogs.com/ck1020/p/6669661.html要说挂起、阻塞、睡眠难免让人想到进程生命周期中的阻塞态或者等待状态,而挂起和睡眠却没有出现在进程生命周期中,说明这三个其实在本质上区别并不那么大,但是既然称呼不同,应该就有不同的道理。先说阻塞,既然它能出现在进程生命周期,必然是每个进程都会经历的一个阶段,众所周知,进程在运行过程中必然要获取资源,...转载 2018-12-24 11:43:14 · 492 阅读 · 0 评论 -
守护进程
进程组:是一个或多个进程的集合。进程组有进程组ID来唯一标识。除了进程号(PID)之外,进程组ID也是一个进程的必备属性。每个进程组都有一个组长进程,其组长进程的进程号等于进程组ID。且该进程组ID不会因组长进程的退出而受到影响。会话周期:会话期是一个或多个进程组的集合。通常,一个会话开始于用户登录,终止于用户退出,在此期间该用户运行的所有进程都属于这个会话期。接下来就可以具体介绍sets...转载 2018-12-19 11:34:41 · 140 阅读 · 0 评论 -
System V IPC概述(信号信,消息队列,共享内存)
转:https://blog.csdn.net/qq_38211852/article/details/804758181.System V引入了三种高级进程间的通信机制:消息队列、共享内寸和信号量 IPC对象(消息队列、共享内存和信号量)存在于内核中而不是文件系统中,由用户控制释放,不像管道的释放由内核控制 IPC对象通过其标识符来引用和访问,所有IPC对象在内核空间有唯一...转载 2018-12-25 09:30:20 · 446 阅读 · 0 评论 -
Posix IPC (信号量,消息队列,共享内存)
上表是打开或者创建Posix IPC对象所用的各种oflag的值前3行指定怎么打开对象:只读只写或者是读写,消息队列能够以任何一种模式打开,信号量的打开不指定模式( 任何信号量的读写都需要读写访问权限 ),共享内存区对象则不能以只写模式打开以下4行是可选的:O_CREAT:若不存在则创建由函数的第一个参数所指明的消息队列,信号量或者共享内存区对象O_EXCL:...转载 2018-12-25 10:08:00 · 664 阅读 · 0 评论 -
线程取消(pthread_cancel)
基本概念pthread_cancel调用并不等待线程终止,它只提出请求。线程在取消请求(pthread_cancel)发出后会继续运行,直到到达某个取消点(CancellationPoint)。取消点是线程检查是否被取消并按照请求进行动作的一个位置. 线程取消的方法是向目标线程发Cancel信号,但如何处理Cancel信号则由目标线程自己决定,或者忽略、或者立即终止、或者继续...转载 2018-12-25 18:02:28 · 879 阅读 · 0 评论 -
SCHED_OTHER/SCHED_FIFO/SCHED_RR
调度算法要求:高资源利用率、高吞吐量、用户满意等原则。进程调度所采用的算法是与整个系统的设计目标相一致的:1.批处理系统:增加系统吞吐量和提高系统资源的利用率;2.分时系统:保证每个分时用户能容忍的响应时间。3.实时系统:保证对随机发生的外部事件做出实时响应int pthread_setschedparam(pthread_t target_thread, int pol...转载 2018-12-25 18:36:50 · 1047 阅读 · 0 评论 -
linux线程相关函数
1.0 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);#include <pthread.h>int pthread_create(pthread_t *thread, co...原创 2018-12-25 19:59:51 · 220 阅读 · 0 评论 -
Linux下的I/O复用与epoll详解
转:https://www.cnblogs.com/lojunren/p/3856290.html前言 I/O多路复用有很多种实现。在linux上,2.4内核前主要是select和poll,自Linux 2.6内核正式引入epoll以来,epoll已经成为了目前实现高性能网络服务器的必备技术。尽管他们的使用方法不尽相同,但是本质上却没有什么区别。本文将重点探讨将放在EPOLL的实...转载 2019-01-02 10:10:48 · 104 阅读 · 0 评论 -
ssh、nfs、ftp
ssh 是一种远程连接工具,通常用来连接远程服务器,可以在客户端直接操作,是现在操作服务器的最常用工具。nfs 是一种linux与linux之间的文件共享服务,可以实现文件共享互访等非常实用的服务。ftp 则是文件传输的一种工具,与文件共享不同的是,当你需要资源时,需要从服务端下载。1、FTP文件传送协议FTP(File Transfer Protocol)是Internet上使用...转载 2019-01-17 15:41:38 · 1344 阅读 · 0 评论 -
epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO
转自:http://www.cnblogs.com/yuuyuu/p/5103744.html一.基本概念 我们通俗一点讲:Level_triggered(水平触发):当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据一...转载 2019-03-04 12:20:07 · 1019 阅读 · 0 评论 -
tasklet / 工作队列 / 软中断
只有中枢的内核代码才使用软中断,而如果用户想要使用这种方式,直接使用软中断并不是一个好的选择,内核为用户提供了另外一种方便的方式即tasklet,tasklet本质上也是一种软中断,准确来说是系统从软中断类型中拿出一种来支持tasklet,所以tasklet就是一种软中断,不过在软中断的基础上,tasklet进行了更细的划分。每个CPU维护一个tasklet链表,其中保存当前CP...转载 2018-12-24 10:21:26 · 284 阅读 · 0 评论 -
临界区、互斥、同步、信号量
转:https://www.cnblogs.com/jan5/articles/3351186.html一、需要了解的概念知识概念1:临界区(1)维基百科对临界区的定义: 在同步的程序设计中,临界区段(Critical section)指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。 当有线程进入临界区段时,其...转载 2018-12-24 10:03:47 · 1303 阅读 · 0 评论 -
进程与线程及调度
转:https://blog.csdn.net/forgotaboutgirl/article/details/67750151、系统调用 在程序状态字(Program Status Word, PSW)寄存器中有一个二进制位控制CPU的两种工作模式(内核态和用户态)。在内核态运行时,CPU可以执行指令集中的每一条指令,操作系统在内核态下运行,从而可以访问整个硬件。用户程序...转载 2018-12-28 19:11:14 · 2012 阅读 · 0 评论 -
linux系统编程(二)--文件操作
1.0 文件描述符 每个进程启动后会自动打开三个文件描述符 0、1、2 分别对应于宏 STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO 2.0 标准IO的缓冲类型 缓冲类型可以分为:无缓冲,行缓冲,与全缓冲 标准输出是"行缓冲",即遇到换行符或进程结束才会真正执行 ...原创 2018-12-13 19:43:51 · 237 阅读 · 0 评论 -
linux信号处理 (信号产生 信号阻塞 信号集)
1.0 定义信号(signal)是Linux进程间通信的一种机制,全称为软中断信号,也被称为软中断。信号本质上是在软件层次上对硬件中断机制的一种模拟。它提供了一种处理异步事件的方法,也是进程间惟一的异步通信方式。体现为操作系统修改了目标进程的PCB内容,即为对其发送了信号。2.0 信号的产生(1)硬件方式 a.当用户在终端上按下某键时,将产生信号。如按下<Ctr...转载 2018-12-20 16:16:16 · 1125 阅读 · 0 评论 -
Linux C 信号 pause、sigsuspend 的相同与区别
转https://www.cnblogs.com/mrethan/p/5612839.htmlpause函数: 功能:让进程暂停直到信号出现 #include<unistd.h> intpause(); 函数说明:pause()会令目前的进程暂停(进入睡眠状态),直至信号(signal)所中断。 返回值:...转载 2018-12-20 17:26:47 · 461 阅读 · 0 评论 -
最初Unix IPC包括:管道、FIFO、信号 ,
管道打开,都要同时打开写端与读端,不然会在open函数产生阻塞!!!无名管道pipe•创建–int pipe (int fd[2]) –返回0表示成功;fd[0]带回管道出口,fd[1]带回管道入口; –fd[0], fd[1]通过文件描述符来表示pipe的出口与入口,进程可以从fd[0]读,并向fd[1]写。 – -1,出错•销毁–close(fd[0]) 关闭读...原创 2018-12-26 16:22:19 · 135 阅读 · 0 评论 -
用户空间与内核空间 进程上下文与中断上下文
转:http://www.cnblogs.com/Anker/p/3269106.html多线程缺点,并解释什么叫上下文切换1.设计更加复杂;2.上下文切换的开销:当CPU从执行一个线程切换到另一个时,它需要先存储当前线程的本地数据、程序指针等,然后载入另一个线程的本地数据、程序指针等,最后才开始执行。这种切换称为“上下文切换”。3.增加资源消耗:线程在运行时除了使用CPU,还需要...转载 2018-12-26 17:44:42 · 170 阅读 · 0 评论 -
信号在目标进程中注册
发送信号的主要函数有:kill()、raise()、 sigqueue()、alarm()、setitimer()以及abort()。实时信号 非实时信号 信号在目标进程中注册在进程表的表项中有一个软中断信号域,该域中每一位对应一个信号。内核给一个进程发送软中断信号的方法,是在进程所在的进程表项的信号域设置对应于该信号的位。如果信号发送给一个正在睡眠的进程,如果进程睡眠在可被...转载 2018-12-21 15:45:02 · 205 阅读 · 0 评论 -
exit()与_exit()函数wait与waitpid及孤儿僵尸
注:exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出,一般都用-1或者1,标准C里有EXIT_SUCCESS和EXIT_FAILURE两个宏,用exit(EXIT_SUCCESS);可读性比较好一点。作为系统调用而言,_exit和exit是一对孪生兄弟,它们究竟相似到什么程度,我们可以从Linux的源码中找到答案:#define __...转载 2018-12-18 11:37:27 · 593 阅读 · 0 评论 -
进程的终止方式和进程的状态
进程的终止方式:有8种方式使进程终止,其中前5种为正常终止,它们是1:从 main 返回2:调用 exit3:调用 _exit 或 _Exit4:最后一个线程从其启动例程返回5:最后一个线程调用pthread_exit异常终止有3种,它们是6:调用 abort7:接到一个信号并终止8:最后一个线程对取消请求做出响应Linux进程状态:R (TASK_RU...转载 2018-12-18 11:51:27 · 6153 阅读 · 1 评论 -
可重入函数与与线程安全与volatile
引子:单线程程序只有一个控制流。不需要考虑静态或全局变量被同时访问或并发访问,但是多线程程序必须考虑并发访问一个资源。为了保证资源的完整性,为多线程程序写的代码必须是可重入的和线程安全的。1.0 定义: 线程安全的(Thread-Safe):如果一个函数在同一时刻可以被多个线程安全地调用,就称该函数是线程安全的。线程安全函数解决多个线程调用函数时访问共享资源的冲突问题。...转载 2018-12-28 17:39:19 · 176 阅读 · 0 评论 -
什么叫同步,什么叫异步?
同步与异步一般用通信 定义 1 异步就是发送信息后,发送者发送信息后,就不再管,发送者并不管接收者在不在线 ----------发短信就是异步 同步就是发送者与接收者同步交流,一方退出,另一方也随之中断通信。。--------------如打电话。 定义2 有时钟信号的是同步,没有时钟信息的是异步。 ...原创 2019-03-08 09:44:53 · 8556 阅读 · 0 评论