嵌入式之系统编程
文章平均质量分 87
嵌入式开发技术必备知识
qmy_lhl
这个作者很懒,什么都没留下…
展开
-
系统编程第七节——线程池
1、什么是线程池?线程池是一种使用多线程与线程同步互斥机制的一种组织结构,这种结构在处理大批量同类型任务时是一种比较高效的处理方式。线程池本质时一个结构体,管理一批线程和线程需要执行的任务。面向对象编程中,对象创建和销毁是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是对一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解转载 2021-07-29 08:45:36 · 127 阅读 · 0 评论 -
系统编程第六节——线程的同步互斥
一、线程的互斥临界资源:系统中多个任务都可以访问的资源。在多线程编程中,必须要注意对临界资源的保护。问题:假设在一个办公室内,有一台打印机,这个打印机所有人都可以共享使用,但是在某一个人使用时,希望在这一段时间内只能被自己使用(互斥),如何实现这个功能?解决方案:不管是谁使用打印机,在使用之前给打印机上锁,用完之后,解锁。1、线程互斥锁线程互斥锁解决的问题就是临界资源的独占式使用,当进程中的线程给某一个资源上锁之后,其他的线程想要使用这个资源的时候,必须等待原来的线程解锁之后才能使用这个资源。原创 2021-07-28 23:36:20 · 238 阅读 · 0 评论 -
系统编程第五节——线程
一、线程的概念1、进程进程就是正在系统中运行的程序。程序被运行时,会被系统从硬盘加载到内存中,进程会在内存中形成一个独立的内存体,这个内存体有自己的堆,栈,数据段,代码段等资源。进程的上级挂靠操作系统。进程是系统中资源分配的最小单位!2、线程线程是比进程更小的单位,在操作系统中不能独立存在,线程必须要存在于进程中。一个进程里面至少有一条线程(主线程),线程是系统中任务调度的最小单位,简单来说,线程就是用来干活的。线程是系统中任务调度的最小单位!操作系统: 一家公司进程:公司里面的部门线程原创 2021-07-28 19:12:56 · 316 阅读 · 0 评论 -
孤儿进程、僵尸进程、守护进程
基本概念我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。孤儿进程一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。孤儿进程并不会有什么危害转载 2021-07-28 11:50:54 · 180 阅读 · 0 评论 -
系统编程第四节——共享内存与信号量
系统编程 – 共享内存一、共享内存的简介共享内存与消息队列一样,都是IPC对象,所以在使用时必须要先获取key值。共享内存是进程间通信数据传输效率最高的一种通信方式。二、共享内存原理在Linux系统下,程序被加载到内存成为进程时,系统会给这个进程分配它执行所需要的内存空间,但是对于软件应用层的进程来说,是不允许直接操作物理内存的,只能操作”虚拟内存”,虚拟内存与物理内存之间存在MMU(内存管理单元),实现虚拟内存与物理内存之间的映射关系。三、共享内存的缺陷共享内存的机制是直接从物理内存中申请原创 2021-07-27 12:47:35 · 1343 阅读 · 1 评论 -
系统编程第三节——信号
进程间通信 — 信号1,Linux下的信号信号机制是Linux系统内核管理任务的一种重要机制,信号传递的信息有限,所以都是表达一些特定意义,大部分的信号的默认功能都是让目标进程退出,暂停(SIGSTOP),继续(SIGCONT)。1)Linux下的信号可以通过命令 kill -l 查看一共是 62个信号。前面的31个信号, 1~311、这些信号被称为非实时信号,也叫作不可靠信号2、信号不会排队,但是会嵌套,如果有新的信号到达,但是原来的信号没有及时响应,前面的信号会被丢弃掉。3、每一个原创 2021-07-21 19:55:12 · 256 阅读 · 0 评论 -
系统编程第二节——管道
Linux进程间通信1、进程间通信的类型管道(pipe)和命名管道(FIFO)信号(signal)共享内存消息队列信号量套接字2、管道 管道是Linux中最常用的进程间通信 IPC 机制。使用管道时,一个进程的输出可以成为另外一个进程的输入。 当输入/输出的数据量特别大时,管道的这种 IPC 机制就非常有用。 在Linux中,通过将两个file结构指向同一个临时的VFS节点,这个VFS节点又指向同一个物理页而实现管道原创 2021-07-20 23:15:57 · 174 阅读 · 0 评论 -
exec函数族实例解析
exec函数族实例解析fork()函数通过系统调用创建一个与原来进程(父进程)几乎完全相同的进程(子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间。linux将复制父进程的地址空间内容给子进程,因此,子进程有了独立的地址空间。),也就是这两个进程做完全相同的事。在fork后的子进程中使用exec函数族,可以装入和运行其它程序(子进程替换原有进程,和父进程做不同的事)。fork创建一个新的进程就产生了一个新转载 2021-07-18 21:33:07 · 205 阅读 · 0 评论 -
系统编程第一节——进程
1、什么是进程?进程就是正在内存中运行的程序。==>在 windows 下的进程信息 ==> ctrl + alt + delete ==> “任务管理器”==》比如:hello.c (源文件) ==》通过 gcc 编译后生成 ==》hello(可执行程序)==》运行 ./hello 程序后,就变成了进程2、Linux下的进程==》ps (查询进程信息)==》ps -aux (静态显示所有的进程信息)==》top (动态显示系统中的进程信息)原创 2021-07-18 21:29:06 · 1417 阅读 · 0 评论