OS
行者小朱
stay hungry,stay foolish
展开
-
计算机系统中的编码问题
一、目前常用的编码因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。由于计算机是原创 2016-03-01 17:21:46 · 2451 阅读 · 1 评论 -
编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别
编译型语言和解释型语言1、编译型语言需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。一般需经过编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件。优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言转载 2016-04-21 10:45:23 · 7033 阅读 · 1 评论 -
进程与线程的区别及相应的通信方法
进程和线程的区别?一、定义进程:从操作系统的角度来说进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位;从并发编程来说是并发执行程序在执行过程中分配和管理资源的基本单位。线程:是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器原创 2016-08-18 22:18:21 · 1743 阅读 · 0 评论 -
进程间的通信方法
一、进程通信(1)管道a)、无名管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系;b)、高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式;c)、有名管道(named pipe):有名管道也是半双工的原创 2016-12-12 14:28:56 · 475 阅读 · 0 评论 -
堆和栈的区别
内存区域一般最起码都有两种:一种是栈内存;一种是堆内存栈内存:1)存放的内容:基本类型的变量(Java中还有对象引用)、函数调用(参数值、局部变量、返回地址等)等等;2)申请方式:由程序自动分配释放的内存空间;3)申请后系统响应:只要系统中栈的剩余空间大于所申请的空间,系统将为程序提供内存,否则提示栈溢出;4)申请大小限制:Windows中栈是由高地址向低地址扩展的数据结构,是原创 2016-04-12 17:28:26 · 393 阅读 · 0 评论 -
操作系统常见的几个进程调度算法
一、先来先服务算法 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行原创 2016-10-20 17:11:02 · 783 阅读 · 0 评论 -
僵尸进程与孤儿进程
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,则那些子进程就成为了孤儿进程。孤儿进程将被init收养,并由init进程完成对它们的状态的收集;僵尸进程:一个进程使用fork创建子进程,如果子进程退出而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程描述符仍保存在系统中;由上面的解释可以看出:孤儿进程会由init进程做善后处理,因此孤儿进程并不会有什么危害原创 2016-09-28 09:27:42 · 321 阅读 · 0 评论 -
按位与、或、异或运算
一、按位与(&)1、概念:参加运算的两个对象,按二进制位进行“与”运算,负数按补码形式参加按位与运算。2、运算规则:0&0=0; 0&1=0;1&0=0;1&1=1;即:两位同时为“1”,结果才为“1”,否则为0【有0则0】 例如:3&5=1,即0000 0011 & 0000 0101 = 0000 00013、“与运算”特殊用途:(1)清零。如果想将一个单元原创 2016-07-19 17:18:59 · 20058 阅读 · 2 评论 -
哈希表的问题总结
一、哈希表哈希表,也称散列表,英文名称Hash Table。是根据关键码值(Key value)而直接进行访问的数据结构,也就是说通过把关键码值映射到表中一个位置来访问记录以便加快查找的速度。这个映射的函数叫做散列函数,存放记录的数组叫做散列表。可以定义为:给定表Table,存在函数F(key),对任意给定的关键字key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表Table为原创 2016-03-02 22:05:27 · 2757 阅读 · 0 评论 -
哈夫曼树与哈夫曼编码
一、哈夫曼树与哈夫曼编码的概念哈夫曼树是一种带权路径长度最短的二叉树,也称为最优二叉树。以下图为例进行说明它们的带权路径长度分别为:图a:WPL=5*2+7*2+2*2+13*2=54图b:WPL=5*3+2*3+7*2+13*1=48由此说明哈夫曼树是带树路径最短的树,也称最优二叉树。因此,我们可以利用哈夫曼树对数据进行压缩,哈夫曼编码就是哈替曼的一个应用。利用哈原创 2016-04-17 13:16:52 · 9203 阅读 · 3 评论 -
大端模式与小端模式
之前一直不在意大端模式与小端模式,随着学习的过程,这里总结一下概念小端模式(Little-Endian):低位字节排放在内存的低地址端,高位字节排放在内存的低地址端大端模式(Big-Endian):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端网络字节序:TCP/IP各层协议将字节定义的Big-Endian,即大端模式,通常称之为网络字节举例说明原创 2016-06-12 15:23:46 · 353 阅读 · 0 评论 -
内存泄露与内存溢出
内存泄露:指程序中动态分配内存给一些临时对象,但是对象没有被GC回收,导致始终占用内存。一句话来说---为对象分配了空间,但对象已无用内存溢出:指程序运行过程中无法申请到足够的内存而导致的一种错误。一句话来说---已没有足够空间来分配给新的对象综上所述,可以发现内存泄露可能会导致内存溢出,但内存溢出的原因不止内存泄露一种情况!原创 2016-04-12 16:55:13 · 391 阅读 · 0 评论 -
死锁
一、死锁的概念死锁是指两个或两个以上的进程在执行过程中,竞争意资源或者由于彼此通信而造成一种阻塞,如果没有外力作用,它们都将无法推进,此时就称系统处于死锁或产生了死锁。二、死锁产生的原因1、系统的资源不足2、进程运行推进顺序不合适3、资源分配策略不当关于这三点,可以这样理解如果系统资源充足,那么进程的所有请求都会得到满足;进程调度(不同进程运行速度、所需资源等都不相同)和资原创 2016-04-08 10:18:22 · 498 阅读 · 0 评论