talent_CYJ

When the going gets tough, the tough get going

UC/OS-II 任务的状态

uc/os是一个抢占式多任务的实时操作系统,每个任务都有各自的状态,并且状态之间都有一定的转换关系。写下此文以作记录及帮助自己理清关系。在uc/os-ii中,任务的状态有5种:睡眠态、就绪态、运行态、等待态及中断服务态。通过下图可以有一个大致的认知:最左边的是睡眠态,该状态下的任务指的是还没交给u...

2016-12-06 15:21:18

阅读数 2538

评论数 0

uC/OS-II任务就绪表及任务调度

最近开始花时间去学习uc/OS-II,一方面是工作上用的是这个系统,另一方面就是想去了解实时操作系统与普通操作系统的区别,学到任务就绪表及任务调度这里,对实时的概念有所了解,所以写此文帮助自己梳理,也希望与读者交流。实时含有立即、及时之意。如果操作系统能使计算机系统及时响应外部事件的请求,并能及时...

2016-10-11 10:18:26

阅读数 1605

评论数 0

<30天自制操作系统>第八天

花了将近1周时间来理清之前模糊的概念,感觉思路清晰了很多,今天是八天内容中的最后一天。以后的内容就不会每天都写文章了。今天的内容还是关于鼠标的控制,但是是让它真正的动起来。在主函数中,我们取得了鼠标的数据。for (;;) { io_cli(); if (fifo8...

2016-07-26 14:15:08

阅读数 504

评论数 0

<30天自制操作系统>第六天

为了让鼠标能移动起来,必须使用中断,而要使用中断则必须将GDT和IDT初始化。在此之前,首先要初始化PIC,它的意思是可编程中断控制器。它是将多个中断信号集合成一个中断信号的装置,PIC检测着输入管脚的多个中断信号,只要有一个中断信号过来,就将唯一的输出管脚信号变成ON,并通知给CPU。 其中与...

2016-07-25 11:20:38

阅读数 791

评论数 0

<30天自制操作系统>第五天

这章节内容比上一章节的更进了一步,不只是显示图像,而是显示文字。一个字符可以用8x16的长方形像素点阵来表示。例如: 将这些数据整理成一组数组,即static char font_A[16] = {0x00, 0x18, 0x18, 0x18, 0x18…} 有了这些数据之后只需将其写到V...

2016-07-23 10:11:28

阅读数 456

评论数 0

<30天自制操作系统>第四天

第四天内容主要是基于第三天的图形界面显示更进了一步。主要是更复杂的显示,而不是单纯的切换到显示模式。对显卡内存进行数据写入,从而显示出我们想要的画面。想要画东西,只要往VRAM里写数据即可,先看以下程序:_write_mem8: ; void write_mem8(int addr, int...

2016-07-22 14:03:10

阅读数 917

评论数 0

<30天自制操作系统>第三天

在第三天中,在原来的基础上添加了部分功能。; haribote-ipl ; TAB=4 ORG 0x7c00 ; 指明程序的装载地址; 以下这段是标准FAT12格式软盘专用的代码 JMP entry DB 0x...

2016-07-21 18:22:09

阅读数 880

评论数 0

<30天自制操作系统>第二天

第二天内容主要是关于一些寄存器的介绍以及使用。以下程序是对第一天程序的完善:; hello-os ; TAB=4 ORG 0x7c00 ; 指明程序的装载地址; 以下这段是标准FAT12格式软盘专用的代码 JMP entry ...

2016-07-21 14:25:59

阅读数 275

评论数 0

<30天自制操作系统>第一天

买了这本书将近一年才开始看- =,最近看完第八天的内容,也就是实现了鼠标的移动。总的来说这本书感觉还是可以,大致上可以了解到一个操作系统是如何搭建。语言幽默风趣,每天的任务量不是特别多并且每天的章节内容明确,由于每个程序我都只是编译现成的代码来看实现效果,所以学完了8天的内容之后,许多概念还是迷迷...

2016-07-21 10:26:01

阅读数 648

评论数 0

编写程序tail,将其输入中的最后n行打印出来。

默认情况下,n的值为10,可通过可选参数改变n的值,命令tail -n将打印其输入的最后n行。#include <stdio.h> #include <stdlib.h> #include <string.h>#define DEFLINS 10 #define...

2016-07-04 14:38:27

阅读数 720

评论数 0

C语言编写的简单计算器程序

这两天在看一个C语言写的计算器程序,做了不少的功夫,跟着作者一步步的进行完善,了解了许多细节性的东西,在此自己做个总结,加深自己对程序的印象,也算是梳理。 在该计算器程序,能进行加减乘除、sin、cos、exp等操作,同时能进行数值保存功能。而该计算器使用逆波兰表示法。即所有运算符都跟在操作数的...

2016-07-01 10:03:13

阅读数 12975

评论数 0

关于C语言的按位运算符

简单的不多说了,写此文章记录为了加深自己对按位运算符的运用。按位运算符有六个,分别是&按位与、|按位或、^按位异或、<<左移、>>右移、~按位求反&经常用于屏蔽某些二进制位|则用于将某些二进制位置置为1.^则是当六个操作数对应位不同时,将该位设为1,否则设为...

2016-06-28 15:23:40

阅读数 450

评论数 0

将16进制数组成的字符串转换为相对应的整型值

int htoi(char hexstr[]) { int hexdigit, i, inhex, n; i = 0; if (s[i] == '0') { ++i; if (s[i] == 'x' || s[i] == 'X') ...

2016-06-28 10:27:09

阅读数 436

评论数 0

编写一个删除C语言程序中所有注释语句的程序

#include <stdio.h>void rcomment (int c); void in_comment_one (void); //该函数用于处理/*及*/的注释符 void in_comment_two (void); //该函数用于处理//的单行注释符 void ...

2016-06-27 17:48:43

阅读数 6917

评论数 0

编写一个程序,把较长的输入行“折”成短一些的多行,折行的位置在输入行的第N列之前的最后一个非空格之后

#include #define TABINC 4 #define MAXCOL 10 //指定输入行的折行位置 char line[MAXCOL]; /* 全局数组,在以下函数中都能共同访问 */ int exptab(int pos); int findblnk(int po...

2016-06-25 10:25:26

阅读数 1343

评论数 0

编写一个程序,打印输入中单词长度的直方图

#include <stdio.h>#define MAXHIST 15 #define MAXWORD 11 #define IN 1 #define OUT 0int main() { int c, i, j, nc, state; //其中nc用于计算一个单词长度...

2016-06-24 11:45:27

阅读数 2631

评论数 1

读入一组文本行,并把最长的文本行打印出来

/* 如题,该算法的框架如下:while(还有未处理的行) if(该行比已处理的最长行还要长) 保存该行 保存该行的长度 打印最长的行*/#include <stdio.h> #define MAXLINE 1000int getline(char line[], in...

2016-06-24 11:32:23

阅读数 467

评论数 0

将一个整数转换为单个字符输出函数实现的细节性问题

首先看一下以下这个程序:void printnum (long n) { if (n < 0) { putchar('-'); n = -n; } if (n >= 10) printnum(n / 10)...

2016-05-19 16:34:43

阅读数 471

评论数 0

C语言二分查找法实现与细节

刚学C的时候没过多久就接触到这种算法,总的来说这个算法并不难。时隔好久,今天看了下书,加深了一些理解,谨记此文,用于回顾及梳理知识。如要求: 编写一个函数,对一个已排序的整数表执行二分查找。函数的输入包括一个指向表头的指针,表中的元素个数,以及待查找的数值。函数的输出是一个指向满足查找要求的元素...

2016-05-16 17:42:32

阅读数 1860

评论数 0

LINUX/UNIX的文件操作函数

本文用于记录在LINUX编程中,常用的文件操作函数,包括系统调用和库函数。 针对输入输出操作,直接使用底层系统调用的一个问题是它们的效率十分低,原因在于: 1. 使用系统调用会影响系统的性能,与函数调用相比,系统调用的开销要大些,因为在执行系统调用时,Linux必须从运行用户代码切换到执行内核代码...

2016-05-04 16:00:25

阅读数 1522

评论数 0

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