自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

NK_test的博客

大部分人愿意做任何事来逃避真正的思考

  • 博客(14)
  • 资源 (2)
  • 问答 (5)
  • 收藏
  • 关注

原创 Linux多线程实践(二)线程基本API(POSIX)

我们知道,进程在各自独立的地址空间中运行,进程之间共享数据需要用进程间通信机制,有些情况需要在一个进程中同时执行多个控制流程,这时候线程就派上了用场,比如实现一个图形界面的下载软件,一方面需要和用户交互,等待和处理用户的鼠标键盘事件,另一方面又需要同时下载多个文件,等待和处理从多个网络主机发来的数据,这些任务都需要一个“等待-处理”的循环,可以用多线程实现,一个线程专门负责与用户交互,另外几个线程

2015-12-28 22:54:51 4020 1

原创 单片机: 简易计算器的实现(键盘)

利用矩阵键盘实现一个简易的计算器。为了简化问题,我们假设只支持小于100的非负整数之间的加、减、乘的运算,并且支持连续运算(结果的数值可以再进行运算)。本程序中C为加号,D为减号,E为乘号,F为等于号。代码中有详细的注释。/* 注:本程序 C 为+, D 为- E为* F 为=号,支持非负整数连续运算。输入的数值小于100,运算结果不超过1000.by Tach----

2015-12-27 19:51:18 19962 13

原创 操作系统: 最佳适配算法和邻近适配算法的模拟实现(内存分配算法)

实现动态分区的分配算法。(1) 最佳适配算法:选择内存空闲块中最适合进程大小的块分配。(2) 邻近适配算法:从上一次分配的地址开始查找符合要求的块,所查找到的第一个满足要求的空闲块就分配给进程。模拟添加进程的时候,假定内存是一块完整的空闲区,对于算法(1)来说,分配的时候遍历所有的空闲内存块,找出其中最适合的一块,注意此时内存分区的总块数可能已经发生了变化;对于算法(2)来说,则需

2015-12-27 19:42:27 7848 2

原创 操作系统: 二级目录文件系统的实现(c/c++语言)

操作系统的一个课程设计,实现一个二级目录文件系统。用disk.txt模拟磁盘,使用Help查看支持的命令及其操作方式,root为超级用户(写在disk.txt中)文件的逻辑结构:流式文件。物理结构:链接文件。物理空间管理:空闲链法。目录结构:二级目录结构。目录搜索技术:线性搜索。FCB:含文件相关的全部属性。 物理盘块的设计(disk.txt)以一个文本文件d

2015-12-23 19:20:39 19119 2

原创 单片机: EEPROM和串口通信

名称:IIC协议 EEPROM24c02 通过串口通信存数读取数据 内容:此程序用于检测EEPROM性能,测试方法如下:写入24c02一个数据,然后在内存中改变这些数据, 掉电后主内存将失去这些信息,然后从24c02中调入这些数据。看是否与写入的相同。电脑通过串口发送一个十六进制的数据到单片机,存储进24c02,要求断电重启后在数码管上显示上一次发送的数据。(本例是1us机器周期,

2015-12-22 20:18:07 4627 1

原创 单片机: 热敏电阻测温并且显示到数码管(温度计)

如上图所示,PCF8591的9脚和10脚,一个是数据线SDA,一个是时钟线SCL。分别接到单片机的P2.0 , P2.1上面。为什么选这两个引脚?因为51单片机上没有IIC总线接口,需要用普通的IO模拟,所以它随便选了两个IO接上就行。VREF是什么?基准电压,也是它能测量的最大电压。如何控制?今天先不说IIC总线,只说控制流程。看器件手册可以知道:

2015-12-21 22:56:07 18326 1

原创 微机接口双色点阵-- 变化的表情动画

使用汇编语言通过双色点阵实现一个动画,这里是表情的变化。基本思路就是分别编写不同的帧,然后依次显示。 颜色的变化是 290h:黄色    288h: 红色。data segmentbuff1 db 00h,00h,00h,18h,18h,00h,00h,00h db 00h,00h,18h,24h,24h,18h,00h,00h db

2015-12-19 16:03:33 2853

原创 Linux多线程实践(一)线程基本概念和理论

线程概念   在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列/指令序列”;   对于每个进程至少有一个执行线程;进程  VS. 线程    1.进程是资源分配(进程需要参与资源的竞争)的基本单位,而线程是处理器调度(程序执行)的最小单位;   2.线程共享进程数据,但也拥有自己的一部分数据,如

2015-12-16 12:44:07 4016 1

原创 Linux进程间通信(IPC)编程实践(十二)Posix消息队列--基本API的使用

posix消息队列与system v消息队列的差别:(1)对posix消息队列的读总是返回最高优先级的最早消息,对system v消息队列的读则可以返回任意指定优先级的消息。(2)当往一个空队列放置一个消息时,posix消息队列允许产生一个信号或启动一个线程,system v消息队列则不提供类似机制。队列中的每个消息具有如下属性:1、一个无符号整数优先级(pos

2015-12-13 21:31:35 394928 1

原创 操作系统: 银行家算法的分析和代码实现(c++语言)

银行家算法(Banker's Algorithm)是一个避免死锁(Deadlock)的著名算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避免死锁产生的算法。它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。为实现银

2015-12-11 23:00:30 13941 2

原创 单片机: 自定义串口通信协议的实现

使用51单片机完成一个简单的串口通信协议。要求:一个协议帧为8个字节,其中头部两个字节,分别是0xFF,0xFE;第3个字节代表第一个数据,第4个字节代表第二个数据(均为正数);第5个字节如果是0,代表两个数据的和,1的话代表两个数据的差;第6个字节为0,代表使用十进制显示,为1代表十六进制显示;最后两个字节代表协议尾部,值分别为0xFD,0xFC。将传输的两个

2015-12-09 20:20:24 16148

原创 Linux进程间通信(IPC)编程实践(十一)System V信号量---实现一个先进先出的共享内存shmfifo

使用消息队列即可实现消息的先进先出(FIFO), 但是使用共享内存实现消息的先进先出则更加快速;   我们首先完成C语言版本的shmfifo(基于过程调用), 然后在此基础上实现C++版本的ShmFifo, 将1块共享内存与3个信号量(1个mutext信号量, 1个full信号量, 1个empty信号量)封装成一个类ShmFifo, 然后编写各自的测试代码; shmfifo

2015-12-08 14:25:39 2870

原创 Linux进程间通信(IPC)编程实践(十)System V信号量---PV操作经典题目

[cpp] view plaincopy//P原语      //P(semaphore *S)      wait(semaphore *S)      {          -- S->value;          if (S->value     {              //将当前进程设置为阻塞状态           

2015-12-06 20:44:00 3546

原创 Linux进程间通信(IPC)编程实践(九)System V信号量---封装一个信号量操作的工具集

System信号量集主要API[cpp] view plaincopy#include   #include   #include   int semget(key_t key, int nsems, int semflg);  int semctl(int semid, int semnum, int cmd, ...);  i

2015-12-03 22:49:00 2685

gdb多线程调试小文件

基于Linux64位的多线程小程序,答案就在某个线程的堆栈中,请使用gdb命令查看哈

2016-03-03

随机数生成器

随机数生成器,自定义范围,支持跳变,适用于各个活动的抽奖

2015-11-30

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除