操作系统的分类



操作系统的分类。

  1. 二分时操作系统
  2. 三实时操作系统
  3. 四网络操作系统
  4. 五分布式操作系统

一、批处理操作系统

 

  	批处理(Batch Processing)操作系统的工作方式是:用户将作业交给系统操作员,系统操作员将许多用户的作业组成一批作业,之后输入到计算机中,在系统中形成一个自动转接的连续的作业流,然后启动操作系统,系统自动、依次执行每个作业。最后由操作员将作业结果交给用户。批处理操作系统的特点是:多道和成批处理。

二、分时操作系统

  	分时(Time Sharing)操作系统的工作方式是:一台主机连接了若干个终端,[......]

Read more

Linux的进程通信(IPC)



进程间通信的目的

数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。
共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。
通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。
资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。
进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。

进程通信方式

linux下进程间通信的[......]

Read more

Linux多线程编程

Linux多线程编程。

线程分类

线程按照其调度者可以分为用户级线程和核心级线程两种。

(1)用户级线程
用户级线程主要解决的是上下文切换的问题,它的调度算法和调度过程全部由用户自行选择决定,在运行时不需要特定的内核支持。在这里,操作系统往往会提供一个用户空间的线程库,该线程库提供了线程的创建、调度、撤销等功能,而内核仍然仅对进程进行管理。如果一个进程中的某一个线程调用了一个阻塞的系统调用,那么该进程包括该进程中的其他所有线程也同时被阻塞。这种用户级线程的主要缺点是在一个进程中的多个线程的调度中无法发挥多处理器的优势。

(2)核心级线程
这种线程允许不同进程中的线程[......]

Read more

记录C程序员面试题、算法、算法导论、Linux、Qt、NS2、Embedded等相关的的博客汇总

记录C程序员面试题、算法、算法导论、Linux、Qt、NS2、Embedded等相关的的博客汇总。

C++ STL 用法总结

算法导论学习总结

http://www.wutianqi.com/?cat=515

 

程序员面试

编程之美解析博客

http://0600310231.blog[......]

Read more

面试题经典跳台阶问题

面试题经典跳台阶问题。

题目:

给定一个有N个台阶的楼梯,一个人从下到上开始跳台阶,这个人有两种跳的方式:一次跳一个台阶,一次跳两个台阶;

问:从台阶底端跳到台阶顶端,有多少种跳台阶的方式?

分析:

首先我们考虑最简单的情况。如果只有1个台阶,那么显然只有一种跳法;如果是2级台阶,那么有2种跳法。对于一个有n级台阶的楼梯来说,我们设跳法为 f(n) ,假如我们先跳1个台阶,则剩下有 n-1 个台阶,跳法为 f(n-1) 次,假如我们先跳2个台阶,则剩下 n-2 阶,跳法为 f(n-2);由此可以推出,对于一个n阶的楼梯,有以下这个跳台阶的公式:

[......]

Read more

进程死锁及解决办法

进程死锁及解决办法,

一、要点提示:

(1)掌握死锁的概念和产生死锁的根本原因。

(2)理解产生死锁的必要条件 — 以下四个条件同时具备:

互斥条件、不可抢占、占有且申请、循环等待。

(3)记住解决死锁的一般方法,掌握死锁的预防和死锁的避免二者的基本思想

(4)掌握死锁的预防策略中资源有序分配策略。

(5)理解进程安全序列的概念,理解死锁与安全序列的关系。

(6)了解银行家算法。

(7)了解资源分配图。

(8)了解死锁的检测及恢复思想。

二、内容简介

在计算机系统中有很多一次只能由一个进程使用的资源,如打印机,磁带机,一[......]

Read more

c++算法寻找最大的K个数

寻找最大的K个数,

问题:查找大量无序元素中最大的K个数。
解法一:该解法是大部分能想到的,也是第一想到的方法。假设数据量不大,可以先用快速排序或堆排序,他们的平均时间复杂度为O(N*logN),然后取出前K个,时间复杂度为O(K),总的时间复杂度为O(N*logN)+O(K).
当K=1时,上面的算法的时间复杂度也是O(N*logN),上面的算法是把整个数组都进行了排序,而原题目只要求最大的K个数,并不需要前K个数有限,也不需要后N-K个数有序。可以通过部分排序算法如选择排序和交换排序,把N个数中的前K个数排序出来,复杂度为O(N*K),选择哪一个,取决于K的大小,在K(K<[......]

Read more

C/C++常见面试题及答案

C/C++常见面试题,

1. C中static有什么作用
(1)隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性,故使用static在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。
(2)static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量。
(3)static的第三个作用是默认初始化为0。其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0×00,某些时[......]

Read more

MS/Google面试题:寻找丢失的数字

MS/Google面试题:寻找丢失的数字,

题目:

有一组数字,从1到N,其中丢失了一个数字,且顺序也被打乱的存储在一个 size 为N-1的数组中

要求:

找出丢失的数字,最好能有程序,最好算法比较快

BTW1:有很多种方法哦,据说O(n)的方法不止一种

BTW2:扩展问题,如果丢失两个,并找出这两个数字;或者,丢失三个,找出三个中的任意一个数字即可

BTW3:一定要小心溢出哦

BTW4:最好不要多申请 N 多空间

题目:

1、给你n个数,其中有且仅有一个数出现奇数次,其余的数都出现偶数次。要求用线性时间常数空间找出出现奇数次的那个[......]

Read more

Google面试题:统计1~N中所包含的1的个数

Google面试题:统计1~N中所包含的1的个数,

题目:

输入:一个正整数N,

输出:要求输出从 1 ~ N 中所出现的 1 的个数,如12中所包含的 1 的数为: 1  、10、11、12 总共包含 5个 1

解法1:

可以对从1~N的每个数字进行遍历,分别求出每个数字中所包含的1的个数,然后相加求和即可得出最后结果;

如下代码:

 

  1. #include <iostream>
  2. using namespace std;
  3. int coutOne(u[......]

Read more