linux高级编程【美高梅手机登录网站】

作者:电脑系统

经过间通信

13、为啥须要经过间通讯?

14、进度间通讯:复信号中断管理

15、进度间通讯:无名氏管道

16、进程间通讯:闻明管道

17、进度间通讯:新闻队列

18、进度间通讯:共享内部存储器

 

第十后生可畏章 线程

  • 五个经过的全部音信对该进程的具有线程都是分享的
  • 线程ID只在所属进度上下文中才有意义,线程ID用pthread_t数据类型表示
  • pthread_equal比较ID,pthread_self打字与印刷本人ID
  • pthread_create创办新线程(相仿进程的fork)
  • 3种方法退出:再次回到,被此外线程撤废(pthread_cancel看似进程的abort),调用pthread_exit
  • 当一个线程重返大概调用pthread_exit时,别的线程可调用pthread_join(等待三个线程截至,相仿进程的waitpid卡塔尔(英语:State of Qatar)拿到其脱离状态
  • 线程也可配置退出时索要调用的函数.相通进度的atexit.那样的函数称为线程清理管理程序pthread_cleanup_push(须要在同大器晚成成效域与pop合营使用卡塔尔(英语:State of Qatar)
  • 在线程被分离后不可用pthread_join伺机它的告后生可畏段落景况,能够调用pthread_detach分别线程(分离后无需收尸,结束直接出狱能源卡塔尔国
  • 互斥量从本质上说是大器晚成把锁,访问共享财富前行行安装,访谈成功后释放.用prhread_mutex_t数据类型表示
  • 起始化互斥量:静态PTHREAD_MUTEX_INTIALIZER,动态pthread_mutex_init,动态分配互斥量的释放pthread_mutex_destroy
  • 上锁pthread_mutex_lock(如曾经上锁会堵塞到解锁卡塔尔(قطر‎,解锁unlock,不封堵上锁trylock
  • 制止死锁(P323卡塔尔多少个互斥量,散列表方法
![](https://upload-images.jianshu.io/upload_images/4332562-1a4a5327058b62ae.png)

foo_rele.png
  • pthread_mutex_timedlock有等待超时的lock
  • 读写锁,读,写分离,围绕写锁拥塞.读写锁也叫分享(读卡塔尔国互斥(写卡塔尔国锁.相通有带超时的版本
  • 基准变量:pthread_cont_t.每一种条件变量总是和三个互斥量相关联,条件本身是由互斥量爱护的.互斥量是用来上锁,条件变量用于等待.
  • 照会线程条件已满足pthread_cond_signal,pthread_cond_broadcast(所有)
  • 自旋锁:spin不经过休眠拥塞,而是处于忙等(自旋卡塔尔(قطر‎状态.自旋锁适用于这么些仅要求窒碍很短时间的情状
  • 屏障barrier:允许每一种线程等待,知道全数同盟线程都达到某一点.

系统调用

01、什么是系统调用?

02、Linux系统调用之I/O操作(文件操作)

03、文件汇报符的复制:dup(卡塔尔, dup2(卡塔尔国

 

第十六章 守护进程

  • 在ps的输出中,内核守护进程出以往方括号中
  • 编制程序法则(P374):
    1. 调用umask将文件格局成立屏蔽字设置为叁个已知值(经常是0卡塔尔(قطر‎
    2. 调用fork,然后使父进度exit.保障不是首席实践官进度
    3. 调用setsid创造一个新会话,然后:a卡塔尔国成为新会话首历程,b卡塔尔成为新进程组的老董,c卡塔尔(英语:State of Qatar)未有决定终端
    4. 将当前职业目录改为根目录(大概局地改为钦赐目录卡塔尔(英语:State of Qatar)
    5. 关门不再要求的公文陈诉符
    6. 一点守护进度张开/dev/null使其拥有0,1,2文件描述符
  • 出错记录syslog设施
    • 底工例程能够调用log函数,客商进度能够展开并读取/dev/klog设备来读取那几个音信
    • 大超级多客商守护进度调用syslog函数产华诞志消息,那使音信被发送至UNIX域数据报套接字/dev/log
    • 无论二个客户是在这里主机依然通过TCP/IP互联网连接,都可将日志发向UDP端口514
  • 通常,syslogd护理进度读取全数3中格式的日记音讯,运营时读一个布局文件/etc/syslog.conf
  • 单实例守护进程:文件和著录锁.
    *医生和医护人员进度惯例:
    • 若守护进度使用锁文件,那么该文件经常存款和储蓄在/var/run目录中,name.pid
    • 若帮忙配置选项,那么配置文件日常存放在/etc目录中,name.conf
    • 照看进度可用命令行运维,但普通是由系统开始化脚本之风华正茂运行的
    • 若三个照拂进度有三个配备文件,则运营时会读该公文,但随后日常就不会再查看
  • 守护进度平常作为服务器进度

多进度达成多职责

04、进度的牵线

05、Linux可实行文件布局与经过组织

06、多进度达成多职责(风度翩翩):fork(卡塔尔

07、多进度达成多职责(二):vfork(卡塔尔(英语:State of Qatar)

08、进度的决定:结束进度、等待过程甘休

09、Linux特殊进度之尸鬼进度

10、Linux特殊进度之孤儿进程

11、Linux特殊进度之守护进度

12、进度替换:exec函数族

 

第十八章 进度间通讯

  • 本章钻探的经文IPC:管道,FIFO,音讯队列,非数字信号量以致分享存款和储蓄
  • 管道:最常用的IPC方式,八个局限性
    • 半双工(就算现在部分连串提供全双工卡塔尔(英语:State of Qatar)
    • 只好在具备公共祖先的五个经过之直接纳
  • 相比较FIFO未有第三种局限,UNIX域套接字未有这两种局限
  • 管道调用pipe函数创设.平日先创设再fork接下来分别关闭读/写端
  • 规范I/O库提供了popenpclose,这八个贯彻的操作是:成立二个管道,fork三个子进度,关闭未使用的管道端,实行二个shell运转命令,然后等等待命令令终止.
  • 当三个过滤程序既发生有个别过滤程序的输入,又读取该过滤程序的输出时,它就改为了同台进程
  • FIFO突发性被称为命名管道.通过FIFO,不相干的进度也能交流数据
  • FIFO是风流浪漫种文件类型,成立FIFO近似于创建文件,mkfifo,mkfifoat,然后用open来开拓它
  • 二种叫做XSI IPC的IPC:音讯队列,时限信号量和共享存款和储蓄器
  • 种种内核中的XSI IPC构造都用一个非负整数的标志符加以援引.标记符是IPC对象的里边名,各类IPC对象都与二个键相关联,将以此键作为该指标的外表名.
  • XSI IPC为各类IPC构造关系了八个ipc_perm构造,该组织规定了权力和主人
  • XSI IPC的标题:a卡塔尔(英语:State of Qatar)在系统范围内起效率,未有援引计数,b卡塔尔国在文件系统中从不名字
  • 音讯队列:是音讯的链接表,存款和储蓄在底蕴中,由音信队列标志符标记.
  • msgget开垦一个存世队列或创立三个新队列,msgsnd将数据放到新闻队列中,msgrcv取用音信
  • 信号量:是二个流量计,用于为四个经过提供对分享数据对象的访问.实际上是一块原语,用于分享能源的一块儿访谈
  • 首先semget(创设卡塔尔(قطر‎得到一个复信号量ID,semctl初始化
  • 分享存款和储蓄同意七个或多个进程共享三个加以的存款和储蓄区
  • shmget拿到二个分享存款和储蓄标记符,shmctl实践八种操作,进度可用shmat将分享存储段连选择它的地点空间中
  • POSIX信号量(XSI时限信号量进级版卡塔尔国有三种样式,命名的和未命名的.调用sem_open来创立或应用,能够调用sem_close刑释其余时域信号量相关的能源

多职责的一块儿与倾轧

24、什么是生机勃勃道,什么是排斥?

25、线程同步与排挤:互斥锁

26、线程同步与排斥:读写锁

27、线程同步与排挤:POSIX无名氏时域信号量

28、进程同步与排挤:POSIX出名时限信号量

29、进程同步与排挤:System V 功率信号量

 

第八十章 数据库函数库

开展进级篇

30、Linux 进度管理

31、Linux 进度调整浅析

32、浅谈进度地址空间与虚构存款和储蓄空间

33、Linux 线程浅析

34、Linux 功率信号列表

35、浅谈可重入函数与不足重入函数

36、浅谈标准 I/O 缓冲区

37、I/O多路复用select、poll、epoll的分别使用

 

转:

第十五章 网络IPC:套接字

  • 调用socket函数创造贰个套接字,套接字是双向的,可以运用shutdown函数幸免一个套接字的I/O
  • 字节序转变,比如hronl,h表示主机,n表示互联网,l表示长整数
  • bind,connect,send
  • 带外数据:TCP协理,UDP不扶植.TCP将带外数据称为紧迫数据,仅协助二个字节的殷切数据
  • 套接字异步I/O

四十多线程达成多义务

 19、进度和线程的分别与联络

20、线程的基本操作

21、线程仓库大小的接收介绍

22、线程私有数量

23、线程池

 

第十二章 伪终端

  • 伪终端一些经文用场:互连网签到服务器,窗口系统终端模拟,script程序,expect程序,运转协同进度,观望长日子运作程序的输出.

第十八章 线程调整

  • 能够应用pthread_attr_tlinux高级编程【美高梅手机登录网站】。布局改善线程属性.
    • 线程的分离状态属性detachstate
    • 线程栈末尾的警戒缓冲区大小guardsize
    • 线程栈的最低地址stackaddr
    • 线程栈的蝇头长度stacksize
  • 线程栈管理pthread_attr_getstack和呼应的set,可经过pthread_attr_getstacksize获取线程属性stacksize(set设置)
  • 互斥量属性pthread_mutexattr_t
    • 经过分享属性pthread_mutexattr_getpshared,互斥量用于过程同步
    • 年富力强属性pthread_mutexattr_getrobust,检查有着互斥量的线程终止后是还是不是需求恢复生机
      *类型属性pthread_mutexattr_gettype(了解递归互斥量卡塔尔(قطر‎
  • 读写锁属性pthread_rwlockattr_t,独有二个进度分享属性
  • 标准化变量属性:进度分享属性和挂钟属性
  • 屏蔽属性,唯有经过分享属性
  • 重入:即使二个函数在平等的岁月点能够被八个线程安全的运用,就称该函数是线程安全的
  • 提供了线程安全的点子管理FILE对象,flockfile,ftrylockfile
  • 线程特定数据,也称线程私有数量,是积累和询问有个别特定线程相关数据的意气风发种机制.pthread_key_create开创一个键,每个线程的键关联了分化的特定数据地址.
  • 使用pthread_once保证例程只调用贰遍,使用pthread_setspecific关联
  • 可收回状态和可收回项目五个线程属性未有包罗在pthread_attr_t中,那多少个照看pthread_cancel调用时的一坐一起,能够用pthread_setcancelstate更改打消状态,_setcanceltype匡正裁撤项目(暗许推迟裁撤,可改为异步撤废卡塔尔
  • 线程和时域信号:每种线程都有投机的实信号屏蔽字,但时限信号的拍卖是拥无线程分享的.
  • pthread_sigmasksigprocmask基本相像,能够调用sigwait等候两个或多少个功率信号现身
  • kill能够把时域信号发送给进程,ptread_kill发送给线程
  • 当线程调用fork后,子进度只设有调用线程的副本.如若不如时推行exec的话,需求清理锁状态.能够调用ptread_atfork树立fork管理程序来清理
  • 线程和I/O:preadpwrite

第十七章 终端I/O

  • 终极I/O有二种区别工作情势:
    • 正规方式输入管理.对极端输入以行为单位开展管理
    • 非标准格局输入管理.输入字符不装配成行

第十六章 高端I/O

  • 非阻塞I/O:对于八个加以的描述符,有二种为其钦定非堵塞I/O的主意
    • 借使调用open得到描述符,则可钦赐O_NONBLOCK标志
    • 对于曾经开垦的贰个描述符,可调用fcntl,由该函数打开标识
  • 记录锁(字节范围锁卡塔尔(英语:State of Qatar),锁定文件中的多个区域
    • fcntl记录锁
    • linux高级编程【美高梅手机登录网站】。锁的盈盈世袭和刑释:a卡塔尔(قطر‎锁与经过和文件两者相关联,b卡塔尔国由fork产生的子进程不世袭父进度所设置的锁,c卡塔尔(英语:State of Qatar)试行exec后,新程序能够一连原履行顺序的锁,但若文件设置了实践时关闭,则已释放了富有锁
    • 文本尾端加锁:内核必得独立于这两天文件偏移量或文件尾端而无时或忘锁
    • 提出性锁和强逼性锁:提出性锁不能够阻止其余非合营(不行使一块大器晚成致方法的拜望卡塔尔(قطر‎进度写该数据库文件
  • I/O多路转载(七个描述符难点卡塔尔国:

    • selectpselect; 还有polllinux高级编程【美高梅手机登录网站】。

      美高梅手机登录网站 1

      对select内定读写和格外描述符.jpg

  • 异步I/O:使用selectpoll能够完结异步格局文告
    • POSIX异步I/O接口使用AIO调控块
  • 函数readvwritev用来在三次函数调用中读,写四个非接二连三缓冲区,有的时候也称之为散布读聚集写
  • 在管道,FIFO以致一些设备(终端和互连网卡塔尔(英语:State of Qatar)中的读写性子,使用readnwreten函数
  • 储存映射I/O:将二个磁盘文件映射到存款和储蓄空间中的八个缓冲区上,mmap函数

    美高梅手机登录网站 2

    mmap.png

第十八章 高档进程间通讯

  • UNIX域套接字比互连网套接字在进程间通讯的频率越来越高.它们不实行合同管理,不增加或删除网络报头,无需总结校验和,不发生顺序号,不须求发送确认报文.
  • 使用socketpair来创制意气风发对无名氏的,相互连接的UNIX域套接字,之后能够命名(bind卡塔尔
  • 传递文件呈报符send_fd

本文由美高梅4858官方网站发布,转载请注明来源

关键词: 笔记