操作系统
文章平均质量分 60
操作系统
Ashley zhao
意外和明天不知道哪个先降临?往者不可谏,来者犹可追
展开
-
误把电脑desktop文件删了怎么处理
误把电脑desktop文件删了怎么处理原创 2022-12-07 19:45:26 · 12483 阅读 · 9 评论 -
经典利用信号量实现同步的问题
1、生产者–消费者问题问题描述:生产者-消费者问题是一个经典的进程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制。本作业要求设计在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。翻译 2017-08-22 19:24:14 · 1777 阅读 · 0 评论 -
浅谈进程间的同步与互斥
当有多个线程的时候,经常需要去同步这些线程以访问同一个数据或资源。例如,假设有一个程序,其中一个线程用于把文件读到内存,而另一个线程用于统计文件中的字符数。当然,在把整个文件调入内存之前,统计它的计数是没有意义的。但是,由于每个操作都有自己的线程,操作系统会把两个线程当作是互不相干的任务分别执行,这样就可能在没有把整个文件装入内存时统计字数。为解决此问题,你必须使两个线程同步工作。一、同步与互斥概念翻译 2017-08-22 19:23:29 · 1965 阅读 · 0 评论 -
进程与线程之间那些事儿
说起进程和线程,今天稍谈一下: 一、进程1.进程概念 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。 在微内核结构的操作系统中,进程的原创 2017-08-22 18:42:46 · 311 阅读 · 0 评论 -
浅析进程与线程的亲戚关系
4消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。5信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一原创 2017-09-06 18:30:12 · 617 阅读 · 0 评论 -
输入型参数和输出型参数
老师上课老说那个参数是输入型参数、那个参数是输出型参数,而那个参数又是输入输出型参数?所有我就简单的了解一下:1、输入型参数是指这个参数的值已知,由外面传给函数里使用. 2、输出型参数是指这个参数的值未知,要通过函数传出来.例如:拷贝函数char *strcpy( char *strDestination, const char *strSource );其函数功能是把字符串strSource 拷原创 2017-06-27 14:56:57 · 3643 阅读 · 0 评论 -
多进程服务器和多线程服务器的实现
一、多进程服务器: 1.多进程服务器实现代码:#include <stdlib.h>#include <stdio.h>#include <signal.h>#define P_NUMBER 255 //并发进程数量#define COUNT 5 //每次进程打印字符串数#define TEST_LOGFILE "logFile.log"FILE *logFile=NULL;char *翻译 2017-06-27 10:39:29 · 997 阅读 · 0 评论 -
守护进程理解与创建
第一次听见这个词语,守护进程感觉很有安全,哈哈!下面我就这个名词来阐述一下我的理解:守护进程也叫精灵进程,它是独立于控制终端并周期性指向某种任务或者等待处理某些事情发生的事件。 即Linux系统启动时启动的系统服务进程,它没有控制终端,不能直接和用户交互。它也不受用户登录注销的影响,一直运行着。守护进程一般是以d为结尾的,表示Daemon。在Linux中一般用ps axj | grep -E ‘d原创 2017-06-07 13:37:23 · 450 阅读 · 0 评论 -
使用gdb调试多进程多线程程序
使用gdb调试多进程多线程程序 1.多进程调试代码测试用例 :以下是我的代码: 我的编译过程:gcc -o test1 test1.c -g调试:gdb test1这是编译和调试的过程:调试的结果:2.1)多线程调试代码测试用例1 调试的结果: 2)多线程调试代码测试用例2 调试结果: 上面两个用例的编辑和调试过程均如下:编译过程:gcc -lpthread -o pthreads p原创 2017-06-05 21:09:32 · 415 阅读 · 0 评论 -
GCC错误信息总结
以下是我自己试验后发现的几种GCC的错误信息,一种四类,分别为语法错误、缺少头文件、缺少库函数、变量未定义;1.是语法错误: 语法错误的提示错误: 2.以下是缺少头文件: 缺少头文件的提示错误: 3.以下是缺少库函数: 缺少库函数的提示错误: 4.以下是变量未定义 变量未定义的提示错误:原创 2017-05-08 20:49:43 · 1024 阅读 · 0 评论 -
浅谈__FUNCTION__
当谈及__FUNCTION__时,可能很多人对__FUNCTION__很熟,不会出现什么问题。但是我在写如下代码的时候把__FUNCTION__写成了_FUNCTION_,可能不细看觉得没什么区别,不会出现什么错误,但是运行起来问题可就大了,注意看: 这是怎么回事,当时我还真不知道,后来才知道是两边各少了一个“_”; 原来__FUNCTION__这个宏它的两边各两个“_”;由于自己出错了,才使我原创 2017-05-03 15:19:26 · 15861 阅读 · 3 评论 -
可重入函数与线性安全的区别与关系
当谈及可重入函数与线性安全的区别与关系时,先说一下可重入函数与线性安全它们各自的概念。1、什么是可重入函数? 一个函数被不同控制流调用,有可能在第一次调用还没返回时就再次进入该函数,这称为重入; 如果一个函数只访问自己的局部变量或参数,则可称为可重入函数;2、线性安全 多个线程访问时,采用了枷锁机制,当一个线程访问该类的某个数据时,进行保护,其他进程不能进行访问直到该进程读取完,其它线程才可原创 2017-05-01 21:40:57 · 403 阅读 · 0 评论 -
捕捉信号的总结
这时第二次写Linux博客,有点牵强,因为实在不熟,只是粗鲁的总结一。 这次我要说的是捕捉信号,那么什么是捕捉信号呢?以及它如何实现和使用?这是我总结的用意。 1. 捕捉信号的概念:如果信号的处理动作是用户自定义函数,在信号传递时就调用这个函数,这称为捕捉信号。 这是别人总结的一个图,我在这借用一下: 捕捉信号的实现:用sigaction()函数实现 这个函数的头文件是#include<s原创 2017-05-01 20:46:11 · 870 阅读 · 0 评论 -
关于死锁的总结
死锁的概念: 指在多道程序系统中,一组进程中的每一个进程均无限地等待被该组进程中另一个进程所占有且永远不会释放的资源,这种现象称为死锁。 或者说:一组进程中,每个进程都无限地等待该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程称为死锁进程。关于死锁的一些结论: 1) 参与死锁的进程最少是两个; 2) 参与死锁的进程至少有两个已经占有资源; 3)原创 2017-03-30 17:15:38 · 2138 阅读 · 0 评论 -
常见进程调度算法
调度算法是指:根据系统的资源分配策略所规定的资源分配算法。 调度也称dispatcher 这是内核的主要职责之一就是决定该轮到哪个任务运行了多数实时内核是基于优先级调度算法的每个任务根据其重要程度的不同被赋予一定的优先级基于优先级的调度法指CPU 总是让处在就绪态的优先级最高的任务先运行然而究竟何时让高优先级任务掌握CPU 的使用权有两种不同的情况这要看用的是什么类型的内核是非占先式还是占先式的原创 2017-02-18 20:15:00 · 1100 阅读 · 0 评论 -
task_struct结构体 字段介绍
标签:linux task_struct结构体 字段介绍Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,task_struct是Linux中的【进程控制块PCB结构】的具体数据结构这个结构体包含了一个进程所需的所有信息。它定义在linux-2.6.38.8/include/linux/sched.h文件中。下面对task_struct这个结构体 进行各原创 2017-02-18 13:24:01 · 587 阅读 · 0 评论