
Linux系统编程
别忘了坚持
这个作者很懒,什么都没留下…
展开
-
Linux-线程之间的同步与互斥
概述由于线程共享进程的资源和地址空间,因此在对这些资源进行操作时,必须考虑到线程间资源访问的同步与互斥问题。这里主要介绍Posix中两种线程同步机制,分别为互斥锁和信号量。这两个同步机制可以通过互相调用对方来实现,但互斥锁更适用于同时可用的资源是唯一的情况;信号量更适用于同时可用的资源为多个的情况。互斥锁互斥锁是用一种简单的加锁方法来控制对共享资源的原子操作。这个互斥锁只有两种状态,即上锁和解锁,可以把互斥锁看做某种意义上的全局变量。在同一个时刻只能有一个线程掌握某个互斥锁,拥有上锁状态的线程能够对共转载 2020-11-01 15:06:03 · 563 阅读 · 0 评论 -
Linux-线程调度与优先级
Linux内核的三种调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃 3,SCHED_RR实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平。Linux中如何体现优先级静态优先级:级别为0~99的100个优先级:0级为普通,1 ~ 99级为实时线程动态优先级:当静态优先级为转载 2020-11-01 11:45:57 · 1532 阅读 · 0 评论 -
Linux线程的基本概念和使用、分离
线程概念线程是指运行中的程序的调度单位。一个线程指的是进程中一个单一顺序的控制流,也被称为轻量级线程。它是系统独立调度和分配的基本单位。同一进程中的多个线程将共享该系统中的全部系统资源,比如文件描述符和信号处理等。一个进程可以有很多线程,每个线程并行执行不同的任务。线程与进程比较① 和进程相比,它是一种非常“节俭”的多任务操作方式。在Linux系统中,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护其代码段、堆栈段和数据段,这种多任务工作方式的代价非常“昂贵”。而运行于一个进程中的转载 2020-11-01 10:28:43 · 192 阅读 · 0 评论 -
Linux进程间通信(六)---信号量通信之semget()、semctl()、semop()及其基础实验
信号量是干啥的?信号量就是用来解决进程间的同步与互斥问题的一种进程间通信机制。同步与互斥的通俗理解这两个名词咱们从字面上就能理解。举个例子吧,在创建子进程时,你是怎么保证父子进程执行的先后顺序呢?我在以前的时候是通过sleep()函数来实现的,比如我想让子进程先运行再让父进程运行,那么我就在父进程的程序中加一个sleep()函数,让父进程先睡眠,这样子就能先执行子进程了。有的时候咱们事先无法知道父进程和子进程哪一个先执行,但是要向我那样使用sleep()函数,只能保证先执行子进程,但是不能保证子进程执转载 2020-11-01 15:02:42 · 861 阅读 · 1 评论 -
Linux--进程的创建与管理
在Linux系统中,除了系统启动之后的第一个进程由系统来创建,其余的进程都必须由已存在的进程来创建,新创建的进程叫做子进程,而创建子进程的进程叫做父进程。那个在系统启动及完成初始化之后,Linux自动创建的进程叫做根进程。根进程是Linux中所有进程的祖宗,其余进程都是根进程的子孙。具有同一个父进程的进程叫做兄弟进程。Linux进程创建的过程示意图如下所示:子进程的创建在Linux中,父进程以分裂的方式来创建子进程,创建一个子进程的系统调用叫做fork()。系统调用fork()为了在一个进程中分转载 2020-10-29 10:13:25 · 527 阅读 · 0 评论 -
linux进程的概念和进程的状态
一 、进程概念第一个被创造出来的进程是0号进程,这个进程在操作系统层面是不可见的,但它存在着。0号进程完成了操作系统的功能加载与初期设定,然后它创造了1号进程(init)。1号进程是管理整个操作系统的,所以在用pstree查看进程树可知,1号进程位于树根。再之后,系统的很多管理程序都以进程身份被1号进程创造出来,还创造了与人类沟通的桥梁——shell。从那之后,人类可以跟操作系统进行交流,可以编写程序,可以执行任务。。。而这一切,都是基于进程的。每一个任务(进程)被创建时,系统会为他分配存储空间等必要资原创 2020-10-28 19:19:55 · 314 阅读 · 0 评论