- 博客(21)
- 资源 (1)
- 收藏
- 关注
转载 python多线程机制
开发多线程的应用系统,是在日常的软件开发中经常会遇到的需求。现在的编程语言都为多线程开发提供了很好的支持,无论是通过库的支持还是将多线程机制内建在语言之中。Python也为多线程系统的开发提供了很好的支持。同样身为动态语言,Ruby也提供了多线程的支持,但是在Ruby1.9之前的多线程机制是在语言的实现中模拟了线程及线程调度机制,而并没有使用操作系统本身的线程机制(在以后的描述中,我们称为原生
2015-10-28 17:23:29 543
转载 文件描述符与文件对象的关系
转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通
2015-10-26 15:36:56 3196
转载 进程间共享文件描述符
进程间传递文件描述符unix一个传统的服务器模型就是一连接一进程模型。进程对地址空间的保护作用是显而易见的,为某个连接服务的进程出现错误导致崩溃,其它的进程还能正常的运行。但是,当连接数大时,创建过多的进程显然会影响效率。那么启动一系列的进程,每个进程都利用epoll为多个连接服务,不是就可以避免创建过多的进程,同时也利用到了进程地址空间保护的优势了吗?但是还有一个问题,我们不能为每一个进程都创建一
2015-10-26 15:30:01 2125
转载 详细讲解从用户空间申请内存到内核如何为其分配内存的过程
Linux内存管理摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操作系统书籍不惜笔墨
2015-10-21 11:24:08 14052 2
转载 理解内存节点与内存分区
UMA和NUMA:UMA(Uniform Memory Access),即一致性内存访问。这种情况下,CPU访问内存的任何位置,代价都是一样的。NUMA)(Non Uniform Memory Access),即非一致性内存访问。这种情况下,CPU访问不同位置的内存,代价是不一样的。在多CPU情况下,对每个CPU来说有本地内存和远端内存,访问本地内存的代价比访问远端内存的代价小。确保CPU
2015-10-21 00:49:12 2599
转载 内存管理图解---------页目录表 页表
页目录和页表结构 收藏 上图反映了如下信息:1、 进程的4G 线性空间被划分成三个部分:进程空间(0-3G)、内核直接映射空间(3G – high_memory)、内核动态映射空间(VMALLOC_START - VMALLOC_END)2、 三个空间使用同一张页目录表,通过 CR3 可找到此页目录表。但不同的空间在页目录表中页对应不同的项,因此互相不冲突3、
2015-10-21 00:21:56 3725
转载 Linux 内核空间与用户空间
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。Linux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。段页式机制如下
2015-10-20 17:40:32 531
原创 linux虚拟地址空间你真的理解了吗?
学了很久linux内核了,但对于linux内核对于内存管理这块始终有许多疑问,学而不思则罔!看了许多书籍和博客但还是没有搞得很明白。今天仔细思考了为什么需要虚拟内存的问题,突然觉得很有收获,所以记下来和大家分享,也是为了给自己留下更深刻的印象!1.理解进程使用的全部资源是’虚拟‘的,我们知道我们编写的应用程序最终要以进程的形式来运行,因而进程就相当于一个虚拟机(虚拟的计算机),所以我们很容易感
2015-10-20 17:19:41 7046
转载 Linux 内存分区管理
inux内核中和内存相关的2个系统参数的设置:想要通过修改linux内存管理相关的参数设置来观察其对内存数据库的读写性能的影响,首先要了解一些linux内存管理相关的重要参数,先了解两个,如下。介绍一些前提基础:在非一致性内存访问(NUMA)情况下,CPU访问不同位置的内存,代价是不一样的。在多CPU情况下,对每个CPU来说都有本地内存和远端内存之分,访问本地内
2015-10-20 11:18:50 1908
转载 DMA传输数据过程简介
DMA传送操作分三个阶段:准备阶段、DMA传送阶段和传送结束阶段。 1.准备阶段:在这个阶段中,CPU通过指令向DMA控制器发送必要的传送参数。 ①控制字送DMA控制器指出数据传送方向。 ②预置MBAP,即数据块在主存缓冲区的首址。 ③置DAR外设的地址,如外设为磁盘机,其地址包括:磁盘机号、盘面号、柱面号和扇区号。 ④给WBC预置,指出数据传送字节/字数。
2015-10-20 11:05:25 22445
转载 C++封装一个简单的线程类
多线程编程简介: 大家在编程时,经常需要在程序中启动一个或多个线程来处理任务,而如果每次都是去调用系统创建线程的API函数来创建,代码量虽不多,但线程的创建和业务逻辑代码就揉在一起了,且创建多个线程的时候,有大量的重复代码,不便于维护。若我们把创建线程和销毁线程的这些共同的代码封装到一个类中,这样我们可以更专注业务逻辑的实现,在其它地方直接拿来用就行,程序也便于维护和扩展。而且这样的
2015-10-19 15:47:19 835
转载 Java Servlet与Applet、CGI、JSP的比较
从网络的早期阶段开始,人们就希望他们的网络服务器不仅能够显示静态文档,通用网关接口(CGI) 扩展了服务器的能力,但其代价是增加了额外的处理进程。FastCGI则把外部CGI 处理进程同网络服务器更紧密地集成在一起,另外,对于专有的,诸如NSAPI 和ISAPI 这样的服务器API,它们直接把外部进程以服务器插件的形式集成到服务器中。现在有了Java servlets,它们的功能强大,可以
2015-10-19 15:06:22 1593
转载 Post与Get区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。 1.根
2015-10-19 14:27:16 294
转载 地址/数据/控制总线原理讲解
选自王爽《《汇编语言》》 一个cpu有n跟地址线,则可以说这个cpu的地址总线的宽度为n,这样的cpu最多可以寻找2的n次方内存单元。图中展示了10根地址线的cpu向内存发出地址信息11时10根地址线上传送的二进制信息。 cpu与内存或其他器件之间的数据传送是通过数据总线来进行的。数据总线的宽度决定
2015-10-18 10:21:46 2368
转载 copy_to_user()分析
在内核的学习中会遇到很多挺有意思的函数,而且能沿着一个函数扯出来很多个相关的函数。copy_to_user和copy_from_user就是在进行驱动相关程序设计的时候,要经常遇到的两个函数。由于内核空间与用户空间的内存不能直接互访,因此借助函数copy_to_user()完成用户空间到内核空间的复制,函数copy_from_user()完成内核空间到用户空间的复制。下面我们来仔细的理一下这两个函
2015-10-13 18:31:55 3873 2
转载 自旋锁(spin lock)与互斥量的区别
自旋锁(spin lock)与互斥量(mutex)的比较自旋锁是一种非阻塞锁,也就是说,如果某线程需要获取自旋锁,但该锁已经被其他线程占用时,该线程不会被挂起,而是在不断的消耗CPU的时间,不停的试图获取自旋锁。互斥量是阻塞锁,当某线程无法获取互斥量时,该线程会被直接挂起,该线程不再消耗CPU时间,当其他线程释放互斥量后,操作系统会激活那个被挂起的线程,让其投入运行。两种锁适用
2015-10-13 11:39:18 6298
转载 wait_event_interruptible()与wake_up()的使用
wake_up() wait_event_interruptible()
2015-10-13 11:17:07 558
转载 一次read()系统调用在内核中的处理过程
部分程序员可能会有这样的疑问:当在程序中调用库函数 read 时,这个请求是经过哪些处理最终到达磁盘的呢,数据又是怎么被拷贝到用户缓存区的呢?本文介绍了从 read 系统调用发出到结束处理的全过程。该过程包括两个部分:用户空间的处理、核心空间的处理。用户空间处理部分是系统调用从用户态切到核心态的过程。核心空间处理部分则是 read 系统调用在 linux 内核中处理的整个过程。Read 系统调用在用
2015-10-12 18:17:36 3510
原创 线程间的内存共享问题----你弄懂了吗?
对线程间共享内存的问题,许多同学是不是都觉得很简单?就是用全局变量来共享码,然而你说的并没有什么卵用…….(^__^)……. 对于线程间内存关系不弄得清清楚楚,很难写好多线程程序。最简练而精准的话来形容线程间共享内存:同一个线程组内线程间共享虚拟内存(自己通过实验总结的,然而不久以后发现一本书中(linux设备驱动程序)早就说过了,我读书好少啊O(∩_∩)O哈哈~) 虚拟内存没弄懂,就看看相关资
2015-10-08 16:09:33 16407
原创 异步、同步与阻塞、非阻塞的区别
以前对异步和同步总是理解不好,最近看了一些文章,总算把他们的关系弄明白了。 阻塞、非阻塞是描述在同一个进程执下行一个函数调用的,异步和同步是描述两个功能模块的关系的、 阻塞当我们是执行某个系统调用时,当我们是执行某个系统调用时,进程被挂起。 非阻塞当我们是执行某个系统调用时,当我们是执行某个系统调用时,进程并不被挂起,他会执行另一个操作。 具体示例以后再举出来吧,今天很忙!!!
2015-10-08 15:34:36 360
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人