随笔分类 -  操作系统

线程模型
摘要:为什么用户线程需要对应的内核线程?在可抢占内核里面-----线程使用系统调用,进入内核执行,如果这时发生线程切换,我们必须记录下当前的内核堆栈情况.这样可以保证每个用户态线程独立的使用内核功能(使用系统调用).内核线程内核线程就是内核的分身,一个分身可以处理一件特定事情。这在处理异步事件如异步IO时特别有用。内核线程的使用是廉价的,唯一使用的资源就是内核栈和上下文切换时保存寄存器的空间。支持多线程的内核叫做多线程内核(Multi-Threadskernel)。轻量级进程轻量级进程(LWP)是一种实现多任务的方法。与普通进程相比,LWP与其他进程共享所有(或大部分)它的逻辑地址空间和系统资源;与 阅读全文

posted @ 2011-12-02 16:18 evilying 阅读(280) 评论(0) 推荐(0)

因特网中和多媒体有关的协议
摘要:因特网中和多媒体有关的协议 1、RTP协议(实时运输协议)在1025-65535中选一个未使用的偶数UDP端口,而在同一次会话中RTCP使用下一个奇数UDP端口号,但5004、5005分别用作RTP、RTCP的默认端口号。2、RTCP(实时运输控制协议)RTP分组只包含数据,控制由另一个配套使用的RTCP协议来提供。3、RTSP(实时流式协议)音频和视频多媒体数据是封装在RTP分组中传送,而RTCP保证服务质量,RTSP仅仅是使媒体播放器能控制多媒体的传送。因而RTCP又称为带外协议,而多媒体流是使用RTP在带内传送的。故RTSP有点像FTP中的控制信道。RTSP语法和操作与HTTP协议的相. 阅读全文

posted @ 2011-12-01 21:38 evilying 阅读(810) 评论(0) 推荐(0)

进程与线程
摘要:进程是处于运行之中的程序,具有一定的独立能力,它是系统进行资源分配和调度的一个独立单位。几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。进程的特征:①独立性:进程是系统中独立存在的实体,可以拥有自己独立的资源,每个进程都拥有自己的私有地址;②动态性:进程和程序的区别在于: ①程序只是一个静态的指令序列集合(可执行文件),是一个被动的实体,而进程是一个正在系统中活动的指令集合; ②在程序中加入了时间的概念,而进程是活动的实体,具有自己的生命周期和各种不同的状态,拥有P.. 阅读全文

posted @ 2011-12-01 20:40 evilying 阅读(433) 评论(0) 推荐(0)

pthread_cond_wait()
摘要:/************pthread_cond_wait()的使用方法**********/ pthread_mutex_lock(&qlock); pthread_cond_wait(&qready, &qlock); pthread_mutex_unlock(&qlock);/*****************************************************/The mutex passed to pthread_cond_wait protects the condition.The callerpasses it locked 阅读全文

posted @ 2011-11-25 14:02 evilying 阅读(16695) 评论(1) 推荐(3)

堆与栈的区别
摘要:一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的 全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另 一块区域。 - 程序结束后由系统释放。 4、文字常量区 —常量字符 阅读全文

posted @ 2011-11-25 13:57 evilying 阅读(266) 评论(0) 推荐(0)

环境变量
摘要:环境变量是包含关于系统及当前登录用户的环境信息的字符串,一些软件程序使用此信息确定在何处放置文件(如临时文件). 环境变量说白了就是指定一个软件的路径,比如说配置TomcatJdk等软件时就必须设置环境变量。方法如下: 点击我的电脑然后按右键——属性——高级——环境变量——新建——名称/路径。 环境变量是包含诸如驱动器、路径或文件名之类的字符串。环境变量控制着多种程序的行为。例如,TEMP 环境变量指定程序放置临时文件的位置。 任何用户都可以添加、修改或删除用户的环境变量。但是,只有管理员才能添加、修改或删除系统环境变量。 使用“控制面板”中的“系统”可以自定义下列变量: 用于 logged_ 阅读全文

posted @ 2011-11-25 13:48 evilying 阅读(404) 评论(0) 推荐(0)

操作系统中的同步、异步、阻塞和非阻塞
摘要:在进行网络编程时,我们常常见到同步、异步、阻塞和非阻塞四种调用方式。这些方式彼此概念并不好理解。下面是我对这些术语的理解。 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin,isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的LRESULT值返回给调用者。 异步 异步的概念和同步相对。当一... 阅读全文

posted @ 2011-11-25 13:44 evilying 阅读(5621) 评论(1) 推荐(0)

同步与阻塞
摘要:说到阻塞,首先得说说I/O等待。I/O等待是不可避免的,那么既然有了等待,就会有阻塞,但是注意,我们说的阻塞是指当前发起I/O操作的进程被阻塞同步阻塞I/O便是指,当进程调用某些涉及I/O操作的系统调用或库函数时,比如accept()(注意accept也算在了i/o操作)、send()、recv()等,进程便暂停下来,等待I/O操作完成再继续运行。这是一种简单而有效的I/O模型,它可以和多进程结合起来有效的利用CPU资源,但是代价就是多进程的大量内存开销。同步阻塞 进程坐水,就不能烧粥 同步非阻塞 类似于用一个进程坐水,烧粥. while(true){if... if... } 好处就是一个进 阅读全文

posted @ 2011-11-25 13:20 evilying 阅读(5868) 评论(1) 推荐(0)

信号与信号量的区别
摘要:信号量(Semaphore),有时被称为信号灯,是在多环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore VI以及Release Semaphore VI分别放置在每个关键代码段的首末端。确认这些信号量VI引用的是初始创建的信号量。1.信号:(signal)是一种处理异步事件的方式。信号时比较复杂的通信方式,用于通知接受进程有某种事件 阅读全文

posted @ 2011-11-25 13:14 evilying 阅读(892) 评论(0) 推荐(0)

进程通信
摘要:现在最常用的进程间通信的方式有:信号,信号量,消息队列,共享内存。所谓进程通信,就是不同进程之间进行一些"接触",这种接触有简单,也有复杂。机制不同,复杂度也不一样。通信是一个广义上的意义,不仅仅指传递一些massege。他们的使用方法是基本相同的,所以只要掌握了一种的使用方法,然后记住其他的使用方法就可以了。1.信号在我学习的内容中,主要接触了信号来实现同步的机制,据说信号也可以用来做其它的事情,但是我还不知道做什么。信号和信号量是不同的,他们虽然都可用来实现同步和互斥,但前者是使用信号处理器来进行的,后者是使用P,V*作来实现的。使用信号要先知道有哪些信号,在Linux 阅读全文

posted @ 2011-11-25 13:12 evilying 阅读(352) 评论(0) 推荐(0)

导航