Linux系统编程学习问题回顾

Posted 行稳方能走远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统编程学习问题回顾相关的知识,希望对你有一定的参考价值。

1、关于文件——继续学习系统io和文件io的区别,以及讲明白同步与互斥。关于锁,除了pv,还要继续学习自旋锁读写锁。

系统io和文件io的区别
参考博文

同步与互斥
现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行,同时运行可能是真的同时运行(SMP架构中),也可能仅仅是操作系统提供的服务(通过将CPU时间分片,并将时间片分给不同的任务)。在多任务操作系统中,同时运行的多个任务可能

  • 都需要访问/使用同一种资源
  • 多个任务之间有依赖关系,某个任务的运行依赖于另一个任务

这两种情形是多任务编程中遇到的最基本的问题,也是多任务编程中的核心问题,同步和互斥就是用于解决这两个问题的。

  • 互斥:是指散步在不同任务之间的若干程序片断,当某个任务运行其中一个程序片段时,其它任务就不能运行它们之中的任一程序片段,只能等到该任务运行完这个程序片段后才可以运行,最基本的场景就是对资源的同时写,为了保持资源的一致性,往往需要进行互斥访问。
  • 同步:是指散步在不同任务之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务,最基本的场景就是任务之间的依赖,比如A任务的运行依赖于B任务产生的数据。

显然,同步是一种更为复杂的互斥,而互斥是一种特殊的同步。
也就是说互斥是两个任务之间不可以同时运行,他们会相互排斥,必须等待一个线程运行完毕,另一个才能运行,而同步也是不能同时运行,但他是必须要安照某种次序来运行相应的线程(也是一种互斥)!
因此互斥具有唯一性和排它性,但互斥并不限制任务的运行顺序,即任务是无序的,而同步的任务之间则有顺序关系。

2、关于进程与线程——第二阶段线程资源要回收;第三阶段进程资源要回收。回收的原因需要继续了解线程的四种属性。

线程的四种属性

3、网络编程和ftp项目——说的资源不回收的问题了。socket的多连接能用线程不要用进程,芯片资源有限。

4、socket中,tcp/ip相关的东西。三次握手,四次挥手,滑动窗口,拥塞控制这些。

以上是关于Linux系统编程学习问题回顾的主要内容,如果未能解决你的问题,请参考以下文章

并发编程系列之线程基础知识回顾

并发编程系列之线程基础知识回顾

Linux C/C++ 零基础学习编程教程,Linux 系统编程教程

Linux系统推荐学习的编程语言以及经验

Linux系统推荐学习的编程语言以及经验

Linux 系统编程