前面已经提到,进程是系统中程序执行和资源分配的基本单位。每个进程都拥有自己的数据段、代码段和堆栈段,这就造成了进程在进行切换等操作时都需要有比较复杂的上下文切换等动作。为了进一步减少处理机的空转时间,支持多处理器以及减少上下文切换开销,进程在演化中出现了另一个概念——线程。
51 单片机,本质上是微控制器,以逻辑运算见长。用它来设计计算器 ?不知道谁想出来的这样的题目,思路明显就是跑偏了,呵呵特别是后一个的题目,不仅要求能加减乘除,竟然还要求选用数码管来显示。如果
“生产者消费者”问题是一个著名的同时性编程问题的集合。通过学习经典的“生产者消费者”问题的实验,读者可以进一步熟悉Linux中的多线程编程,并且掌握用信号量处理线程间的同步和互斥问题。
这汇编的程序,编写的很复杂,实现的功能却还是很简陋。在硬件方面,显示金额的位数也不足。做而论道用 C 重新编写了一个程序,如下:#include#include#define BAITIAN 10 //白天价格/km#define YEJIA
读者一定都听说过著名的OSI协议参考模型,它是基于国际标准化组织(ISO)的建议发展起来的,从上到下共分为7层:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。这个7层的协议模型虽然规定得非常细致和完善,但在实际中却得不到广泛的应用,其重要的原因之一就在于它过于复杂。
/*有四个独立按键为 K1~K4,有四个数码管,可显示 0000~9999。初始时都显示 0。四个数码管中,有一个处于闪烁状态。闪烁的频率为 1Hz。利用 K3、K4 可以使得闪烁的位置左右移动。只有不停闪烁的位,才可
本章首先介绍了线程的基本概念、线程的分类和特性以及线程的发展历程。
P0 口内部的电路图,并不是人人都可以看懂的,很多人都要看文字说明。但是,有些说明写的,很是差强人意,接口电路的基本功能特点,往往都解释错了。在单片机的外部扩充存储空间时,有一种三总线方式,
在Linux中的网络编程是通过socket接口来进行的。人们常说的socket是一种特殊的I/O接口,它也是一种文件描述符。socket是一种常用的进程之间通信机制,通过它不仅能实现本地机器上的进程之间的通信,而且通过网络能够在不同机器上的进程之间进行通信。
基本的 51 单片机有四个并行口,其中还包含了一个串行口。当接口不够用的时候,大家就会想到,使用什么外接芯片来扩充。但是,各种教材、参考书、网络文章,介绍扩充并行口的花样不少,扩充串行口的方法
在实际情况中,人们往往遇到多个客户端连接服务器端的情况。由于之前介绍的如connet()、recv()和send()等都是阻塞性函数,如果资源没有准备好,则调用该函数的进程将进入睡眠状态,这样就无法处理I/O多路复用的情况了。本节给出了两种解决I/O多路复用的解决方法,这两个函数都是之前学过的fcntl()和select()。
//给出的电路如下图所示://图片链接://http://xiangce.baidu.com/picture/detail/684895d8e7d3b312ef1c7eb503c20233254a2475//要求://1.在 K2 或 K3 的中断服务期间,K1 的中断请求仍能被服务;//2
通过实现NTP协议的练习,进一步掌握Linux网络编程,并且提高协议的分析与实现能力,为参与完成综合性项目打下良好的基础。
很早以前,在某个论坛上就看到下面的题目:用单片机的I/O口控制8个LED,要求编写程序,实现下面的功能。1.第1、3、5、7个灯半亮,其余的全亮。2.第1个亮1/8、第2个亮2/8、第3个亮3/8、第4个亮4/8、第
本章首先概括地讲解了OSI分层结构以及TCP/IP协议各层的主要功能,介绍了常见的TCP/IP协议族,并且重点讲解了网络编程中需要用到的TCP和UDP协议,为嵌入式Linux的网络编程打下良好的基础。