linux/ubuntu
文章平均质量分 72
tzshlyt
不积跬步,无以至千里。
展开
-
GC垃圾回收的基本方式
GC 内存回收的三种基本方式类似c和c++的语言中,内存由程序员手动管理,需要时请求操作系统分配,不需要时返还系统,虽然效率高,但是容易出错。标记清楚方式从根开始将可能被引用的对象用递归的方式进行标记,类似树的结构,然后将没有标记到的对象作为垃圾进行回收。分两个阶段,第一阶段从根部开始打标记,第二阶段将全部对象按顺序扫描一遍,将没有标记的对象进行回收。缺点:在分配了大量对象,只有小部分存活的情况下,还要对大量死亡对象进行扫描,消耗时间。复制收集方式从根开始将被引用的对象复制到另外的空间原创 2021-03-09 22:32:00 · 501 阅读 · 0 评论 -
基于MIT6.828 分析 linux 从用户态到内核态用户栈和内核栈切换过程
基于MIT6.828 分析 linux 从用户态到内核态用户栈和内核栈切换过程基于MIT6.828课程的Lab3,我们来分析一下程序从用户态到内核态中用户栈内核栈切换的过程。你需要具备:MIT6.828 课程的基本了解,环境搭建和代码运行汇编基本知识gdb 基本调试首先函数调用栈是这样的:i386_init --> env_run --> env_pop_tf,env_po_tf 中 iret 模拟中断返回进入用户态,执行 hello.c 代码,umain --> l原创 2020-12-09 12:03:40 · 375 阅读 · 0 评论 -
[Linux]多线程同步之sem_wait()学习笔记
1、semaphore 的这种信号量不仅可用于同一进程的线程同步,也可以用于不同进程间同步。一个生产者-消费者例子:生产者不停的向一个固定大小的环形队列中添加数据,消费者从环形队列中清零数据,如果生产者积累的数据大于环形队列长度,则等待消费者清除数据有空位后再生产。#include #include #include #include #include #define NUM原创 2016-11-13 20:03:17 · 16522 阅读 · 3 评论 -
[Linux]多线程同步之pthread_cond_wait()学习笔记
线程间同步的一种情况:线程A需要等某个条件成立才能继续往下执行,现在这个条件不成立,线程A就阻塞等待,而线程B在执行过程中使这个条件成立了,就唤醒线程A继续执行。在pthread库中通过条件变量(Condition Variable)来阻塞等待一个条件,或者唤醒等待这个条件的线程 。一个生产者-消费者的例子:消费者A等待生产者B产出产品后才打印,否则消费者阻塞等待生产者生产。原创 2016-11-13 18:55:12 · 3257 阅读 · 1 评论 -
[Linux] c语言简单的udp socket 示例
服务端:#include #include #include #include #include #include #include #include #include #include "wrap.h"#define MAXLINE 80#define SERV_PORT 8000int main(void){ struct sockaddr_in s原创 2016-11-19 15:00:45 · 642 阅读 · 0 评论 -
一个Linux下c语言线程池的实现
#include "threadpool.h"#include "common.h"threadpool_t *threadpool_init(int thread_num, int queue_max_num){ threadpool_t *pool = NULL; pool = malloc(sizeof(threadpool_t)); do {原创 2017-07-06 22:06:48 · 858 阅读 · 0 评论 -
[Linux] Linux内核编译安装过程,及Linux源码目录结构
从源代码编译和安装Linux kernel 2.6内核,及Linux源码目录结构环境主机:MacBook Pro (Retina, 13-inch, Early 2015) 10.14.3虚拟机软件:VMware fusion 11虚拟机里安装:Ubuntu 10.04内核版本:Linux Kernel 2.6.32.1备注1、为什么选择 2.6.32.1 版本?大多数书籍讲的...原创 2019-03-03 19:34:59 · 541 阅读 · 0 评论 -
[Linux] c语言变量的存储位置-笔记
c语言变量的存储位置#include <stdio.h>/* 分配在 .rodata段, 程序加载时.rodata段和.text 段通常合并到一个Segment中, 只读,GLOBAL */const int A = 10; // 分配在 .data段,GLOBALint a = 20; // 分配在 .data段,LOCAL,只能在某一个目标文件中定义和...原创 2019-03-06 17:30:46 · 712 阅读 · 0 评论 -
[Linux] 头文件实质-笔记
头文件实质定义和声明可以不用头文件,直接在使用的程序里进行申明,头文件实际上只是替换的作用。#include <stdio.h>extern void push(char); // 方法申明 extern 不是必须的, 如果不想被使用需要用static修饰。extern char pop(void); extern int is_empty(void);ext...原创 2019-04-10 09:38:45 · 181 阅读 · 0 评论 -
[Linux] c 语言tcp socket 示例从简单到复杂
上面例子是最基本的tcp socket 流程,没有错误处理,下面写一个模块 wrap.c 给socket函数加上错误处理代码包装成新的函数;服务端也不能接收多个客户端请求,使用fork()函数创建一个子进程专门服务客户端,而父进程专门负责监听端口,再使用sigaction()函数处理SIGCHLD信号调用wait清理僵尸进程;使用setsockopt设置socket描述符选项SO_REUSEADDR为1,允许创建端口号相同但ip地址不同的多个socket描述符。h客户端输入也不是交互式的,将其改为交互式原创 2016-11-19 14:54:08 · 8738 阅读 · 0 评论 -
[linux] unix domain socket 例子
服务器:#include #include #include #include #include #include #include #include #include #define MAXLINE 80char *socket_path = "server.socket";int main(void){ struct sockaddr_un seru原创 2016-11-29 13:41:37 · 4757 阅读 · 1 评论 -
error opening serial port
环境:ubuntu 12.04 64bitpl2303 USB转串口在使用一个串口程序与51单片机通信时,提示error opening serial port '/dev/ttyUSB0' permission denied解决方法:改变ttyUSB0的执行权限# sudo chmod 777 /dev/ttyUSB0可以使用 # ls -l /de原创 2013-12-03 21:23:16 · 4831 阅读 · 1 评论 -
Ubuntu下STC89C52RC开发环境搭建
What it is, how to set up a development environment on Linux (Ubuntu), a sample software and some basic explanations.[TODO: put photos, format, add links to doc etc.] As I was still in China, an原创 2013-12-08 12:09:45 · 1979 阅读 · 0 评论 -
Ubuntu下MSP430开发环境搭建
阅读 以下文章可搞定Ubuntu下搭建MSP430开发环境(MSPGCC)(一) Programming the MSP430 Launchpad on Ubuntu原创 2013-12-08 12:50:52 · 1793 阅读 · 0 评论 -
ubuntu 调节屏幕亮度
安转ubuntu后不能调节屏幕立环境:acer 4743g nvidia GEFORCE GT520M ubuntu 14.04 64-bit1、$ sudo gedit /etc/default/grub 打开文件中找到 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"原创 2014-05-18 14:14:27 · 906 阅读 · 0 评论 -
ubuntu 14.04 安装 32位兼容库
error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory原创 2014-05-18 12:52:36 · 1821 阅读 · 0 评论 -
vi/vim编辑器必知必会
转自:http://blog.csdn.net/xiajun07061225/article/details/7039413一、我们为什么要学习vim编辑器?Linux的命令行界面下面有非常多的文本编辑器。比如经常听说的就有Emacs、pico、nano、joe与vim等。vim可以看做是vi的高级版。我们为什么一定要学习vim呢?有以下几个原因:(1)所有的Unix like转载 2015-04-25 22:33:46 · 529 阅读 · 0 评论 -
vmwore unbuntu14.04 忘记开机密码
vmwore unbuntu14.04 忘记开机密码注意:进入开机界面一瞬间按住 “esc” 键,而不是开机后就按住参考 http://blog.csdn.net/david_xtd/article/details/6854676http://askubuntu.com/questions/91188/authentication-token-manipulation-errorhttps://w原创 2016-07-31 11:38:26 · 941 阅读 · 0 评论 -
linux 批量复制某一类文件shell脚本
linux 批量复制某一类文件shell脚本1、新建脚本 batch_copy.sh#!/bin/bashecho "batch copy..."#保存的目录save_dir=$HOME"/Desktop/tmp/"#新建保存目录文件夹mkdir ${save_dir}#批量复制“.icns”格式的文件for file in *.icns;do echo ${file}原创 2016-08-17 20:12:17 · 4655 阅读 · 0 评论 -
配置minicom与51单片机进行串口通信
1、插入51单片机机usb转串口后,使用 lsusb 命令可以察看USB设备,ubuntu内已经集成了pl2303驱动,不需要再安装。2、使用dmesg | grep usb,可以查看其安装情况,这里连接的是 ttyUSB0 。3、安装minicom:#sudo apt-get install minicom4、配置minicom:#sudo minicom -s5原创 2013-11-30 21:25:52 · 1224 阅读 · 0 评论