linux操作系统
文章平均质量分 77
L未若
难得糊涂!!!
展开
-
由一个线程例子引发的思考(转载)
在谈这个例子之前先贴上进程与线程的内存结构,方便对线程有一个更深的理解。(如果觉得前面的介绍很烦,可以直接跳到最后看问题的分析和最终解决方法的代码)进程的内存结构下图是在Linux/x86-32中典型的进程内存结构,从图中的地址分布可以看出,内核态占1G空间,用户态占3G空间 关于进程的虚拟地址空间可以参考:http://blog.csdn.net/slvher/a转载 2015-12-02 19:49:23 · 664 阅读 · 0 评论 -
为什么会引入线程(进程,优缺点,模型)!!!
1,为什么会产生或者引入线程呢???2,程序,进程,线程之间的区别???3,线程的优缺点,线程的模型(1:1,N:M,N:1)???原创 2016-08-05 20:14:49 · 18283 阅读 · 2 评论 -
进程间通信
1,进程中的两种关系 进程同步与进程互斥 1,顺序程序特征(顺序性,封闭性,确定性,可再现性) 2,并发程序的特征(共享性,并发性,随机性) 互斥:由于进程间要求资原创 2016-08-16 14:22:46 · 422 阅读 · 0 评论 -
线程的基本属性(分离,栈大小,保护区,竞争,调度并发)以及TSD特定数据
线程的属性: 我们知道,在创建一个线程的时候可以指定一个线程的属性,通过第二个参数来指定:pthread_attr_t *attr. 一般情况下,我们都将这个参数设置为空,表示这个线程使用的是默认属性 那么如果,我们要将线程属性设定为一个特定的值的话,这时候:我们就需要一个线程属性变量(类型:pthread_attr_t),这种类型的变量需要首先初始化后才能用,可以调用这个函数原创 2016-08-06 16:47:51 · 1041 阅读 · 0 评论 -
POSIX条件变量(生产者,消费者)
POSIX条件变量1,当一个线程互斥的访问条件变量的时候,它发现这个变量当前的状态不满足这个线程得以继续执行的要求 就需要等待其它线程对该变量进行更改,直到满足它的要求,不然的话,它什嘛也不做。。。。。。。。。 等待条件的满足。这个时候呢,,,就需要用到条件变量 如上,一个全局变量n = 0; 两个线程,都有加锁机制,一旦进入临界区,当线程1进入临界区之后,那么原创 2016-08-07 23:49:10 · 950 阅读 · 5 评论 -
POSIX信号量与互斥锁(生产者,消费者)
POSIX信号量相关函数 POSIX信号量的打开操作跟POSIX消息队列,共享内存的打开方式是一样的 sem_open(打开),sem_close(关闭),sem_unlink(删除一个信号量) sem_open - initialize and open a named semaphore sem_close - close a named semap原创 2016-08-07 15:30:21 · 1488 阅读 · 0 评论 -
一个简单线程池的实现
什么是线程池???1,包含若干个线程,是线程的集合 线程池当中的线程个数不是越多越少,太多了会增加系统的开销。太少了又会降低并发量。 所以线程池当中的线程的个数有严格的要求 若干个线程通常都小于并发的任务量2,线程池中的线程用于执行大量的相对短暂的任务 当某一个时刻来了大量的并发任务时,我们要用若干个相对较少的线程来调度这些大量的任务。。。由于线程的 个数小于原创 2016-08-09 17:59:35 · 451 阅读 · 0 评论 -
磁盘调度算法,内存调度,内存分配策略
磁盘是可供多个进程共享的设备,当有多个进程都要求访问磁盘时,应采用一种最佳调度算法,以使各进程对磁盘的平均访问时间最小。由于在访问磁盘的时间中,主要是寻道时间。因此: 磁盘调度算法的目标是使磁盘的平均寻道时间最少1,先来先服务(FIFS,first come first served) 根据进程请求访问磁盘的先后顺序进行调度。公平,简单,每个进程都能依次得到处理,不会出现某一进程的请求长期得原创 2016-10-09 10:10:54 · 7414 阅读 · 0 评论 -
看我linux(ubuntu)下的64位编译器编译32位程序
大家看到这个不要好奇,我也是在分析结构体大小时想到的,我们大家都知道在windows底下,我们想编译一个c程序(用64位和32位分别编译,特别不方便),除非是双系统,或者虚拟机,但是装这些有时候挺麻烦的,但是但是,在linux底下这可是很方便的,我们来看:一 .查看当前linux系统到底是多少位!!! 方法1:getconf LON原创 2015-12-05 12:47:41 · 10651 阅读 · 0 评论 -
内核态,用户态,目态,管态
目态,管态大多数计算机系统将CPU执行状态分为目态与管态。CPU的状态属于程序状态字PSW的一位。CPU交替执行操作系统程序和用户程序。管态又叫特权态,系统态或核心态。CPU在管态下可以执行指令系统的全集。通常,操作系统在管态下运行。 目态又叫常态或用户态。机器处于目态时,程序只能执行非特权指令。用户程序只能在目态下运行,如果用户程序在目态下执行特权指令,硬件将发生中断,由操作系统获得控制,特权指原创 2016-09-26 16:14:14 · 8418 阅读 · 3 评论 -
Linux 信号,僵尸进程,(面试)
1,信号有那些是不能被屏蔽的???()2,僵尸进程是什嘛样子的,产生子进程的时候给其分配空间了之后,在变成僵尸进程之后,对这块空间是如何处理 的,是将其全部释放掉???还是保留部分空间给(子进程的进程ID、终止状态以及资源利用信息(CPU时间,内 存使用量),因为父进程可能会用到这些东西,????信号(signal)是Linux进程间通信的一种机制,全称为软中断信号原创 2016-09-27 13:12:27 · 1700 阅读 · 0 评论 -
linux-守护进程的编写
linux编程-守护进程编写守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。 守护进程的编程本身并不转载 2016-09-27 13:51:06 · 463 阅读 · 0 评论 -
同一进程中的共享和私有数据///
由一个题引发的小思考: 用一进程中线程不共享的部分应该是什嘛啊!!!首先声明一点: 线程堆栈:简称栈 Stack 托管堆: 简称堆 Heap线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。进程拥有这许多共性的同时,还拥有自己的个性。有了这些个性,线程才能实现并发性原创 2016-10-06 19:33:56 · 2065 阅读 · 0 评论 -
POSIX线程,线程的客户/服务通信(pthread_join,pthread_exit,pthread_detach,pthread_self)
我们所熟知的线程函数:1,pthread_create,pthread_join,pthread_exit,pthread_detach,pthread_self2,如何避免产生僵尸线程(进程)3,多线程引发的客户/服务通信原创 2016-08-05 19:42:38 · 867 阅读 · 0 评论 -
虚拟存储,内存分配,页面置换
虚拟存储,虚拟内存什嘛关系???内存如何分配???页面又按何种方式置换???原创 2016-08-01 21:30:37 · 2022 阅读 · 0 评论 -
从内存角度深入看结构体(window/linux)大小
今天我们来看一下windows(32, 64)(dev-c++,vc),linux(32, 64)不同系统下,它们求结构体大小时,编译器到底给它们分配了哪些内存,又为什么这样分配,为啥子编译器给它们有时空闲3个内存块,有时候又空闲7个内存块,为什么啊,为什么啊当你们读了上面的内容,还想继续往下看的时候,就说明你开始关注内存的分配问题了,哈哈!!!关于内存对齐:简单地理解就是:程序中,数据结构中的变量等等都需要占用内存,系统采用内存对齐,就可以提高访问速度(为了访问未对齐的内存,处理器需要作两次内原创 2015-12-04 17:16:18 · 3102 阅读 · 6 评论 -
linux/window下的main函数详解(绝对经典,main的真正样子啊!!!)
学过c的朋友写一个简单地主函数,就只是跟main有关的,可能五花八门,不信啊,哈哈,不信你看,如:1. int main()2. int main(void)3. void main(void)4. main()但是,大家可曾知道main函数的真实面目啊,有人说:我知道,不就是 : int main(int argc, char * argv)原创 2016-01-30 11:09:01 · 3027 阅读 · 0 评论 -
putty远程登录修改字体大小和颜色
字体大小设置Window->Appearance->Font settings—>Change按钮设置(我的设置为16)字体为(Consolas)字体颜色设置Window->Colours->Default Foreground->Modify设置(我喜欢绿色设置:R:0 G:255 B:0)此外在默认的黑色背景下 蓝色看不太清楚,可以把Window->Colour转载 2016-01-30 16:14:32 · 1412 阅读 · 0 评论 -
STDIN_FILENO的作用与stdin的区别!!!
本文转载于:YEYUANGEN(讲解相当深刻,谢谢了):http://blog.csdn.net/yeyuangen/article/details/67819991.STDIN_FILENO的作用STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。操作系统转载 2016-03-02 07:59:10 · 973 阅读 · 0 评论 -
操作系统发展的简单历程
从无操作系统计算机到脱机输入,输出,在后来的单道批处理系统到多道批处理系统,在到分时系统,实时系原创 2016-04-10 12:08:15 · 6705 阅读 · 0 评论 -
网络字节序和主机字节序详解!!!
我们都知道,如今的通讯方式已经趋向与多样化,异构通信(计算机软件(操作系统) + 计算机硬件(内核架构,ARM,x86)不同)也已经很普遍了,如,手机和电脑中的qq进行通信,,,同时,在计算机设计之初,对内存中数据的处理也有不同的方式,(低位数据存储在低位地址处或者高位数据存储在低位地址处),然而,在通信的过程中(ISO/OSI模型和TCP/IP四层模型中),数据被一步步封装(然原创 2016-02-24 09:52:30 · 36021 阅读 · 8 评论 -
Linux下输入输出函数fgets,fputs函数,printf参数问题!!!
在研究socket通信时遇到了这个函数:客户端需要发送信息到服务端,客户端就通过fgets函数从标准输入输入字符,服务端在通过fputs将字符输出到标准输出fgets:#include char *fgets(char *s, int size, FILE *stream);fgets() reads in at most one less than size cha原创 2016-05-27 08:50:17 · 3750 阅读 · 0 评论 -
bind:address already in use的深刻教训以及解决办法
今天在linux下,编写了一个简单的回射客户/服务器(就是客户机从控制台标准输入并发送数据,服务端接受数据,但是不对数据进行处理,然后将数据返回,交由客户机标准输出),然后遇到了一些问题,郁闷了好长时间,然后就想着将这些东西写下来,跟大家分享分享1, 客户端和服务端到底那个是先退出的??这个有什么区别吗??(死循环)2, 为什么有的时候bind:address already in use一直存在???不是说好的2-4分钟吗,,(ctrl + z 和 ctrl + c)3, 当bind:add原创 2016-02-26 09:24:55 · 161328 阅读 · 5 评论 -
Linux进程,fork-专研精讲(实例讲解)!!!
创建进程有两种方式,1:由操作系统创建;2:由父进程创建由操作系统创建的进程,它们之间是平等的,一般不存在资源继承关系(称之为:系统进程)。而对于由父进程创建的进程(子进程),它们和父进程之间是隶属的关系,然后子进程继续创建属于自己的子进程,形成进程家族原创 2016-05-14 21:56:15 · 4985 阅读 · 0 评论 -
进程的专属
进程:操作系统的主要任务是管理计算机的软,硬件资源。现代操作系统的主要系统特点在于程序的并发执行,Linux操作系统亦是如此。操作系统借助于进程来管理计算机的软,硬件资源,支持多任务的并行执行。所以说,操作系统最核心的概念就是进程。Linux是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机;多任务是指Linux可以同时执行几个任务,可以在还未执行完一个任务时又执行另原创 2016-04-07 17:07:53 · 725 阅读 · 0 评论 -
五种I/O,select
一个输入操作通常包括两个不同的阶段:1,等待数据准备好:2,从内核中向进程复制数据:对于一个套接字上的输入操作:1,等待数据从网络中到达。当所有的等待分组到达时,它被复制到内核中的某个缓冲区。2,数据从内核缓冲区复制到应用进程缓冲区。套接口的默认状态是阻塞的。这就意味着当发出一个不能立即完成的套接字调用时,其进程将被投入睡眠,等待相应操作完成。原创 2016-07-15 09:49:08 · 1712 阅读 · 0 评论 -
Linux下的read,write函数
read函数从打开的设备或文件中读取数据。#include ssize_t read(int fd, void *buf, size_t count); 返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0参数count是请求读取的字节数,读上来的数据保存在缓冲区buf中,同时文件的当前读写位置向后移转载 2016-03-02 20:58:00 · 9926 阅读 · 0 评论